Redis 数据库

1.字符串(String)

用途

字符串是 Redis 最基本的数据类型,可以存储任何形式的文本,

如JSON、XML或简单的字符串值。

它常用于缓存用户会话、计数器、缓存数据库查询结果等。

操作

字符串类型支持设置(SET)、获取(GET)、删除(DEL)、自增(INCR)、自减(DECR)、追加(APPEND)等操作:

  • 设置值:SET key value

  • 获取值:GET key

  • 设置过期时间:EXPIRE key timeout

  • 删除键:DEL key

  • 批量设置值:MSET key1 value1 key2 value2 ...

  • 批量获取值:MGET key1 key2 ...

  • 自增/自减:INCR key / DECR key 或 INCRBY key increment / DECRBY key decrement

特性

字符串类型是动态字符串,可以修改内容,并且最大长度为512MB。

2.列表(List)

用途

列表是一个简单的字符串列表,按照插入顺序排序。

列表常用于实现消息队列或执行原子推入或弹出操作。

操作

列表类型支持从两端推入元素(LPUSHRPUSH)、弹出元素(LPOPRPOP)、获取列表元素(LRANGE)、获取列表长度(LLEN)等操作。

  • 在头部插入元素:LPUSH key value1 [value2] ...

  • 在尾部插入元素:RPUSH key value1 [value2] ...

  • 获取列表指定范围内的元素:LRANGE key start stop

  • 移除并获取列表头部元素:LPOP key

  • 移除并获取列表尾部元素:RPOP key

  • 获取列表长度:LLEN key

特性

列表是双向链表结构,支持从头部或尾部进行O(1)时间复杂度的弹出和推入操作。

3.集合(Set)

用途

集合是一个无序集合,自动处理重复元素。

集合常用于实现交集、并集、差集等操作,例如,用于标签系统、用户关注列表等。

操作

集合类型支持添加元素(SADD)、移除元素(SREM)、获取集合中的元素(SMEMBERS)、检查元素是否存在(SISMEMBER)等操作。

  • 添加成员:SADD key member1 [member2] ...

  • 获取集合中的所有成员:SMEMBERS key

  • 判断成员是否存在于集合中:SISMEMBER key member

  • 删除集合中的一个或多个成员:SREM key member1 [member2] ...

  • 返回给定所有集合的交集:SINTER key1 [key2] ...

  • 返回所有给定集合的并集:SUNION key1 [key2] ...

Redis:0>sadd empno 8000
"1"
Redis:0>sadd empno 8001
"1"
Redis:0>sadd empno 8002
"1"
Redis:0>sadd empno 8003 8004 8005
"3"
Redis:0>smembers empno
 1)  "8000"
 2)  "8001"
 3)  "8002"
 4)  "8003"
 5)  "8004"
 6)  "8005"
Redis:0>sadd empno 8001
"0"
Redis:0>smembers empno
 1)  "8000"
 2)  "8001"
 3)  "8002"
 4)  "8003"
 5)  "8004"
 6)  "8005"
Redis:0>scard empno
"6"
Redis:0>sismembers empno 8000
"ERR unknown command 'sismembers'"
Redis:0>sismember empno 8000
"1"
Redis:0>sismember empno 8001
"1"
Redis:0>srem empno 8000 80001
"1"
Redis:0>smembers empno
 1)  "8001"
 2)  "8002"
 3)  "8003"
 4)  "8004"
 5)  "8005"
Redis:0>spop empno
"8001"
Redis:0>smember empno
"ERR unknown command 'smember'"
Redis:0>smembers empno
 1)  "8002"
 2)  "8003"
 3)  "8004"
 4)  "8005"
Redis:0>srandmember empno 3
 1)  "8003"
 2)  "8002"
 3)  "8004"

特性

集合内部使用哈希表实现,因此添加、删除、查找元素的操作都是O(1)时间复杂度。

4.有序集合(Sorted Set)

用途

有序集合与集合类似,但它为每个元素关联了一个分数,使得元素能够按照分数进行排序。

有序集合常用于排行榜、带权重的消息队列等场景。

操作

有序集合类型支持添加元素(ZADD)、移除元素(ZREM)、根据分数或元素值获取元素排名(ZRANKZREVRANK)、获取指定分数范围内的元素(ZRANGEBYSCORE)等操作。

  • 添加成员及其分数:ZADD key score1 member1 [score2 member2] ...

  • 通过索引区间返回有序集合中指定区间内的成员:ZRANGE key start stop [WITHSCORES]

  • 增加指定成员的分数:ZINCRBY key increment member

  • 获取有序集合中成员的分数:ZSCORE key member

  • 删除有序集合中的一个或多个成员:ZREM key member [member] ...

Redis:0>select 1
"OK"
Redis:1>zadd keyword 0 "刘德华" 0 "成龙" 0 "张家辉"
"3"
Redis:1>zincrby keyword 1 "刘德华"
"1"
Redis:1>zincrby keyword 5 "成龙"
"5"
Redis:1>zincrby keyword 3 "张家辉"
"3"
Redis:1>zrevrange keyword 0 -1
 1)  "成龙"
 2)  "张家辉"
 3)  "刘德华"
Redis:1>zcard keyword
"3"
Redis:1>zincrby keyword 5000 "刘德华"
"5001"
Redis:1>zincrby keyword 500 "成龙"
"505"
Redis:1>zincrby keyword 3000 "张家辉"
"3003"
Redis:1>zdecrby keyword 100 "成龙"
"ERR unknown command 'zdecrby'"
Redis:1>zcount keyword 3000 5000
"1"
Redis:1>zcount keyword 5 10
"0"
Redis:1>zscore keyword "张家辉"
"3003"
Redis:1>zrangebyscore keyword 3000 5001
 1)  "张家辉"
 2)  "刘德华"
Redis:1>zrangebyscore keyword 3003 5001
 1)  "张家辉"
 2)  "刘德华"
Redis:1>zrangebyscore keyword 3000 (5001
 1)  "张家辉"
Redis:1>zrangebyscore keyword 3000 +inf
 1)  "张家辉"
 2)  "刘德华"
Redis:1>zrangebyscore keyword -inf 3000
 1)  "成龙"
Redis:1>zrevrangebyscore keyword 5001 3000
 1)  "刘德华"
 2)  "张家辉"
Redis:1>zrank keyword "张家辉"
"1"
Redis:1>zrank keywrod "刘德华"
null
Redis:1>zrank keyword "刘德华"
"2"
Redis:1>zrevrank keyword "刘德华"
"0"
Redis:1>zrem keyword "成龙","张家辉"
"2"
Redis:1>zmember keyword
"ERR unknown command 'zmember'"
Redis:1>zrevrange keyword 0 -1
 1)  "刘德华"
Redis:1>zremrangebyrank keyword 0 2
"1"
Redis:1>zrevrange keyword 0 -1

Redis:1>zremrangebyscore keyword -inf (5000
"0"

特性

有序集合使用哈希表和跳跃表(skip list)实现,确保了元素的快速插入、删除和有序访问。

5.哈希(Hash)

用途

哈希是一个键值对集合,可以存储对象。

哈希常用于存储、缓存和管理对象,例如用户信息、配置信息等。

操作

哈希类型支持设置字段(HSET)、获取字段(HGET)、删除字段(HDEL)、检查字段存在(HEXISTS)、获取所有字段和值(HGETALL)等操作。

  • 设置哈希表中的字段值:HSET key field value

  • 获取哈希表中指定字段的值:HGET key field

  • 删除哈希表中的指定字段:HDEL key field [field] ...

  • 获取哈希表中所有字段:HKEYS key

  • 获取哈希表中所有值:HVALS key

  • 获取哈希表中字段和值的数量:HLEN key

特性

哈希内部使用哈希表实现,字段名是字符串,字段值可以是字符串或数字,

适合存储对象和映射表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/945198.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI 智能助手对话系统

一个基于 React 和 Tailwind CSS 构建的现代化 AI 对话系统,提供流畅的用户体验和丰富的交互功能。 项目链接:即将开放… 功能特点 🤖 智能对话:支持与 AI 助手实时对话,流式输出回答📁 文件处理&#xff…

Design Compiler:两种工作模式(线负载模式和拓扑模式)

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 Design Compiler可以以线负载模式或拓扑模式启动,必须选择其中一个模式。在拓扑模式下还可使用多模式和UPF模式:多模式允许在多种工作…

应急响应练习

文章目录 web1web2 web1 题目要求: 前景需要: 小李在值守的过程中,发现有CPU占用飙升,出于胆子小,就立刻将服务器关机,这是他的服务器系统,请你找出以下内容,并作为通关条件&#…

从零开始构建直播APP美颜功能:直播美颜SDK的开发实践指南

本文将从零开始,详细探讨如何开发一款功能完善的直播美颜SDK,帮助开发者快速集成美颜功能。 一、明确需求与功能设计 开发美颜功能的第一步是明确需求。直播场景中的美颜需求通常包括以下几点: 实时滤镜:提供多种风格的滤镜&am…

.NET周刊【12月第4期 2024-12-22】

国内文章 dotnet 简单使用 ICU 库进行分词和分行 https://www.cnblogs.com/lindexi/p/18622917 本文将和大家介绍如何使用 ICU 库进行文本的分词和分行。 dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用 https://www.cnblogs.com/lindexi/p/18621674 本文将和大…

vue3大屏实现;使用使用CSS Grid实现大屏

文章目录 一、效果1.效果2.使用CSS Grid3.插件4.html代码5.index.scss代码 一、效果 1.效果 方案:采用CSS的Grid布局,实现首页大屏模块划分和自适应功能; 布局: 大屏主要内容,高宽比是1920*1080;即16:9的…

基于FISCO BCOS的电子签署系统

概述 本项目致力于构建一个安全、高效且功能完备的电子签署系统,通过整合区块链技术与传统数据库管理,为用户提供了可靠的电子签署解决方案,有效应对传统电子签署系统的数据安全隐患,满足企业和个人在数字化办公环境下对电子文档…

【PCIe 总线及设备入门学习专栏 5 -- PCIE接头引脚定义】

文章目录 PCIe 硬件接口 pin 本文转自:小K 硬件会 2024年09月03日 19:35 北京 PCIe 硬件接口 pin 在使用 PCIe 接口时,可以将 PCIe 金手指插入任何不短于金手指长度的 PCIe 插槽中。比如: x1 的 PCIe 金手指可以插入 x1、x4、x8 和 x16 的…

【开源免费】基于SpringBoot+Vue.JS大型商场应急预案管理系统(JAVA毕业设计)

本文项目编号 T 105 ,文末自助获取源码 \color{red}{T105,文末自助获取源码} T105,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

【鸿蒙NEXT】鸿蒙里面类似iOS的Keychain——关键资产(@ohos.security.asset)实现设备唯一标识

前言 在iOS开发中Keychain 是一个非常安全的存储系统,用于保存敏感信息,如密码、证书、密钥等。与 NSUserDefaults 或文件系统不同,Keychain 提供了更高的安全性,因为它对数据进行了加密,并且只有经过授权的应用程序才…

VBA批量插入图片到PPT,一页一图

Sub InsertPicturesIntoSlides()Dim pptApp As ObjectDim pptPres As ObjectDim pptSlide As ObjectDim strFolderPath As StringDim strFileName As StringDim i As Integer 设置图片文件夹路径strFolderPath "C:\您的图片文件夹路径\" 请替换为您的图片文件夹路径…

【Gitlab】详细介绍与安装配置指南

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Gitlab 2、Gitlab起源 二、GitLab的核心功能 …

Mcnemar‘s exact test

与卡方检验的区别 与fisher exact test区别

从手术到诊断:Tekceleo超声波压电电机的全面医疗应用

在当今医疗领域,技术的不断创新正在推动传统医疗模式向更精准、更高效的方向转变。Tekceleo公司凭借其超声波压电电机技术,在医疗行业中逐步占据重要地位,为医疗操作的精准化与高效化做出了显著贡献。 Tekceleo超声波压电电机的技术特点 Tek…

Postman[3] 创建Get和Post请求

1.创建Get请求 以打开百度页面为例 链接:https://www.baidu.com/ 步骤: 1.1新建一个Collection 1.2Add Request 1.3填充请求的url 1.4 Send 1.5检查返回结果 注意:这里和我们打开网页看到的页面不一样,是因为缺少请求头&…

C# OpenCV机器视觉:姿态估计

在一个阴沉沉的下午,天空仿佛被一块巨大的灰色抹布盖住,细雨淅淅沥沥地洒着,阿强正在实验室里捣鼓他那些宝贝仪器,活像一个正在摆弄玩具的大孩子。突然,同事小杨像只没头的苍蝇一样冲了进来,脸上写满了困惑…

自动化测试模型(一)

8.8.1 自动化测试模型概述 在自动化测试运用于测试工作的过程中,测试人员根据不同自动化测试工具、测试框架等所进行的测试活动进行了抽象,总结出线性测试、模块化驱动测试、数据驱动测试和关键字驱动测试这4种自动化测试模型。 线性测试 首先&#…

语音识别基础算法——动态时间规整算法

前言 动态时间规整算法,Dynamic Time Wraping,缩写为DTW,是语音识别领域的一个基础算法。 算法的提出 DTW 的提出是为了解决或尽量解决在语音识别当中的孤立词识别不正确的问题。该问题简单描述为:在识别阶段,将输入…

Word论文交叉引用一键上标

Word论文交叉引用一键上标 1.进入Microsoft word使用CtrlH快捷键或单击替换按钮 2.在查找内容中输入[^#] 3.鼠标点击,标签为“替换为:”的文本框,注意光标一定要打在图红色方框圈中的文本框中! 4.点击格式选择字体 5.勾选上标…

BLIP论文笔记

论文地址 BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 论文思想 其实Clip就相当于只用了ITC