Redis常用数据类型操作命令


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

文章目录


论文投稿

会议官网会议官网【投稿 / 参会】

论文出版:


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 查看过期时间

如果我的内容对你有帮助,请 点赞 , 评论 , 收藏 。创作不易,大家的支持就是我坚持下去的动力!

相关推荐
小高不会迪斯科6 小时前
CMU 15445学习心得(二) 内存管理及数据移动--数据库系统如何玩转内存
数据库·oracle
e***8907 小时前
MySQL 8.0版本JDBC驱动Jar包
数据库·mysql·jar
l1t7 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
今天只学一颗糖7 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
青云计划7 小时前
知光项目知文发布模块
java·后端·spring·mybatis
赶路人儿7 小时前
Jsoniter(java版本)使用介绍
java·开发语言
testpassportcn8 小时前
AWS DOP-C02 認證完整解析|AWS DevOps Engineer Professional 考試
网络·学习·改行学it
探路者继续奋斗8 小时前
IDD意图驱动开发之意图规格说明书
java·规格说明书·开发规范·意图驱动开发·idd
失忆爆表症8 小时前
03_数据库配置指南:PostgreSQL 17 + pgvector 向量存储
数据库·postgresql
AI_56788 小时前
Excel数据透视表提速:Power Query预处理百万数据
数据库·excel