问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Redis 八大数据类型详解

创作时间:
作者:
@小白创作中心

Redis 八大数据类型详解

引用
CSDN
1.
https://blog.csdn.net/weixin_38854703/article/details/113172763

Redis 是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,包括字符串、列表、哈希表、集合、有序集合等。本文将详细介绍 Redis 的八大数据类型及其应用场景。

Redis 的五大基本数据类型

String(字符串)

应用场景:

  1. 实现计数器(如文章阅读量)
  2. 存储 JSON 对象

常用命令:

  • SET key value:设置字符串值
  • GET key:获取字符串值
  • INCR key:将字符串值自增 1
  • DECR key:将字符串值自减 1

List(列表)

应用场景:

  1. 消息队列(使用 LPUSHRPOP 命令)
  2. 栈(使用 LPUSHLPOP 命令)

常用命令:

  • LPUSH key value:从列表头部添加元素
  • RPUSH key value:从列表尾部添加元素
  • LPOP key:从列表头部移除元素
  • RPOP key:从列表尾部移除元素
  • LLEN key:获取列表长度
  • LRANGE key start stop:获取列表指定范围内的元素

Hash(哈希表)

应用场景:
适合存放经常变动的对象,可以直接修改某个属性,而不需要像字符串类型那样先转换成实体类再修改。

常用命令:

  • HSET key field value:设置哈希表字段的值
  • HGET key field:获取哈希表字段的值
  • HGETALL key:获取哈希表中所有字段和值
  • HSETNX key field value:仅当字段不存在时设置其值
  • HDEL key field [field ...]:删除一个或多个哈希表字段

Set(集合)

应用场景:

  1. 共同好友、共同关注(使用 SINTER key1 key2 获取交集)
  2. 可能认识的人(使用 SDIFF key1 key2 获取差集)
  3. 点赞功能(使用 SADD key value 添加,SREM key value 删除,SCARD key 统计数量)
  4. 随机抽奖功能(使用 SPOP key 随机删除元素或 SRANDMEMBER key 随机抽取元素)

常用命令:

  • SADD key member [member ...]:向集合添加一个或多个成员
  • SMEMBERS key:获取集合中的所有成员
  • SISMEMBER key member:判断成员是否在集合中
  • SINTER key [key ...]:获取多个集合的交集
  • SDIFF key [key ...]:获取多个集合的差集
  • SUNION key [key ...]:获取多个集合的并集
  • SCARD key:获取集合的成员数量
  • SPOP key:随机移除并返回集合中的一个成员
  • SRANDMEMBER key [count]:随机返回集合中的一个或多个成员

ZSet(有序集合)

应用场景:
热点新闻(使用 ZINCRBY key increment member 增加权重,ZREVRANGE key start stop withscores 获取前 N 条热点新闻)

常用命令:

  • ZADD key score member [score member ...]:向有序集合添加一个或多个成员,或更新已存在成员的分数
  • ZRANGE key start stop [WITHSCORES]:获取有序集合中指定范围的成员
  • ZREVRANGE key start stop [WITHSCORES]:获取有序集合中指定范围的成员,按分数降序排列
  • ZINCRBY key increment member:为有序集合中的成员增加分数
  • ZSCORE key member:获取成员的分数
  • ZCARD key:获取有序集合的成员数量
  • ZRANK key member:获取成员在有序集合中的排名(从小到大)
  • ZREVRANK key member:获取成员在有序集合中的排名(从大到小)
  • ZREM key member [member ...]:移除一个或多个成员

跳跃表

跳跃表是基于多指针有序链表实现,可以看成多个有序链表,在查找时从上层指针开始查找,找到对应的取经后再到下一层查找。

跳跃表优点:

  1. 插入速度非常快,不需要进行旋转等操作来维护平衡性
  2. 更容易实现
  3. 支持无锁操作

Redis 三种特殊数据类型

Geospatial(地理位置)

应用场景:

  • 附近的人
  • 根据溺水人员地理位置获取附近的救援人员

常用命令:

  • GEOADD key longitude latitude member [longitude latitude member ...]:添加地理位置
  • GEOPOS key member [member ...]:获取地理位置坐标
  • GEODIST key member1 member2 [unit]:计算两个成员之间的距离
  • GEORADIUS key longitude latitude radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]:以给定的经纬度为中心,返回键包含的位置元素当中,与中心的距离不超过给定最大距离的所有位置元素
  • GEORADIUSBYMEMBER key member radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]:以给定成员为中心,返回键包含的位置元素当中,与中心的距离不超过给定最大距离的所有位置元素
  • GEOHASH key member [member ...]:返回一个或多个位置元素的 Geohash 表示

Hyperloglog(统计)

应用场景:
网页的 UV(一个人访问一个网站多次,但是还是算作一个人)

常用命令:

  • PFADD key element [element ...]:将一个或多个元素添加到 HyperLogLog 中
  • PFCOUNT key [key ...]:返回 HyperLogLog 的基数估计值
  • PFMERGE destkey sourcekey [sourcekey ...]:合并一个或多个 HyperLogLog 到目标 HyperLogLog

Bitmap(位图)

应用场景:
统计用户信息活跃与不活跃、登录与未登录、打卡等两个状态的场景

常用命令:

  • SETBIT key offset value:设置位图中指定偏移量的位值
  • GETBIT key offset:获取位图中指定偏移量的位值
  • BITCOUNT key [start end]:计算位图中指定范围内的位值为 1 的数量
  • BITOP operation destkey key [key ...]:对一个或多个位图执行位操作
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号
Redis 八大数据类型详解