
🌈 个人主页: Hygge_Code
🔥 热门专栏:从0开始学习Java | Linux学习| 计算机网络
💫 个人格言: "既然选择了远方,便不顾风雨兼程"

文章目录
- [Redis 常用数据类型操作命令](#Redis 常用数据类型操作命令)
论文投稿
会议官网 :会议官网【投稿 / 参会】

论文出版:

Redis 常用数据类型操作命令
以下是五种常用的数据类型:
- String(字符串)
- List(列表)
- Hash(哈希)
- Set(集合)
- ZSet(有序集合)
一、String 字符串
最基础、最常用的类型,可存:字符串、数字、JSON 串、图片二进制。
常用命令
- set key value 设置值
- get key 获取值
- setnx key value 不存在才设置
- setex key 秒数 value 设置key的值的同时,也设置过期时间
- incr key 自增
- decr key 自减
- mset k1 v1 k2 v2 批量设置
- mget k1 k2 批量获取
二、List 列表
List的数据结构为快速链表quickList。Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层是个双向链表 ,对两端的操作性能很高,但是通过索引下标操作中间的节点性能会较差。
具体结构:首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是zpst ,也即是压缩列表 。它将所有的元素紧挨着一起存储,分配的是一块连续的内存,当数据量比较多的时候才会改成quicklist。.因为普通的链表需要的附加指针空间太大,会比较浪费空间。Redis:将链表和ziplist结合起来组成了quicklist。也就是将多个ziplist使用双向指针串起来使用。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。
常用命令
- lpush key value1 value2 左边插入
- rpush key value1 value2 右边插入
- lpop key 左边弹出
- rpop key 右边弹出
- lrange key 0 -1 获取列表范围内元素
- llen key 获取列表长度
三、Hash 哈希
Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。
常用命令
- hset key field value 设置一个字段
- hget key field 获取一个字段
- hgetall key 获取所有字段和值
- hkeys key 获取所有字段
- hvals key 获取所有值
- hexists key field 判断字段是否存在
四、Set 集合
Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set可以自动去重,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的命令,这个也是list所不能提供的。
Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是 O(1)。
常用命令
- sadd key value1 value2 添加元素
- smembers key 查看所有元素
- sismember key value 判断是否存在
- srem key value 删除元素
- sinter key1 key2 取两个集合交集
- sunion key1 key2 取并集
五、ZSet 有序集合
Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员(自动排序 好了)。集合的成员是唯一的,但是评分可以是重复的。
zset底层 使用了两个数据结构:
(1)hash,hash的作用就是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值。
(2)跳跃表,跳跃表的目的在于给元素value排序,根据score的范围获取元素列表(跳跃表效率堪比红黑树,实现远比红黑树简单)。
对比有序链表和跳跃:
- 有序链表
要查找值为51的元素 ,需要从第一个元素开始依次查找、比较才能找到。共需要6次比较- 跳跃表
1. 第 2 层: 从头节点 1 开始,向后比较到 21。21 < 51,但下一个是 NULL,所以从 21 下到第 1 层。
比较次数:1 次(1 → 21)
2. 第 1 层: 从 21 开始,向后比较到 41。41 < 51,继续向后到 61。61 > 51,所以从 41 下到第 0 层。
比较次数:2 次(21 → 41,41 → 61)
3. 第 0 层: 从 41 开始,向后比较到 51。51 就是目标节点,查找结束。
比较次数:1 次(41 → 51)
总的比较次数为4次
总计比较次数:1+2+1=4 次
常用命令
- zadd key score1 value1 score2 value2 添加元素
- zrange key 0 -1 正序取范围
- zrevrange key 0 -1 倒序取范围
- zrank key value 获取排名
- zscore key value 获取分数
六、通用命令
任何类型都能用:
- keys * 查看所有 key
- exists key 检查 key 是否存在
- del key 删除 key
- expire key 秒数 设置过期时间(得先设置了key才行)
- ttl key 查看过期时间
如果我的内容对你有帮助,请 点赞 , 评论 , 收藏 。创作不易,大家的支持就是我坚持下去的动力!





