Redis7.0 核心数据结构

String 结构


字符串常用操作

  • SET key value //存入字符串键值对
  • MSET key value [key value …] //批量存储字符串键值对
  • SETNX key value //存入一个不存在的字符串键值对
  • GET key //获取一个字符串键值
  • MGET key [key …] //批量获取字符串键值
  • DEL key [key …] //删除一个键
  • EXPIRE key seconds //设置一个键的过期时间(秒)
  • INCR key //将key中储存的数字值加1 (原子操作)
  • DECR key //将key中储存的数字值减1 (原子操作)
  • INCRBY key increment //将key所储存的值加上increment (原子操作)
  • DECRBY key decrement //将key所储存的值减去decrement (原子操作)

String 应用场景

  • 单值缓存
  • 对象缓存,value 为 json 字符串
  • 分布式锁:SETNX key value + EXPIRE key seconds
  • 计数器:记录文章点赞次数
  • web 集群 session 共享
  • 分布式系统全局序列号

Hash 结构


Hash 常用操作
  • HSET key field value //存储一个哈希表key的键值
  • HMSET key field value [field value …] //在一个哈希表key中存储多个键值对
  • HSETNX key field value //存储一个不存在的哈希表key的键值
  • HGET key field //获取哈希表key对应的field键值
  • HMGET key field [field …] //批量获取哈希表key中多个field键值
  • HDEL key filed [field …] //删除哈希表key中的field键值
  • HLEN key //返回哈希表key中field的数量
  • HGETALL key //返回哈希表key中所有的键值
  • HINCRBY key field increment //为哈希表key中field键的值加上增量increment

Hash 应用场景

  • 对象缓存

  • hmset user 1:name lisi 1:age 12

    • hmset user 2:name xiaowu 2:age 33
    • hmget user 1:name在这里插入图片描述
  • 电商购物车
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    Hash 优点

  • 同类数据归类存储,方便管理

  • 相比 String 操作,消耗性能和 CPU 更小

  • 相比 String,存储更节省空间

Hash 缺点

  • Expire 命令只对 key 生效,对 field 不生效
  • Redis 集群架构下不适合大规模使用

List 结构


List 常用操作
  • LPUSH key value [value …] //将一个或多个值value插入到key列表的表头(最左边)
  • LPOP key //移除并返回key列表的头元素
  • RPUSH key value [value …] //将一个或多个值value插入到key列表的表尾(最右边)
  • RPOP key //移除并返回key列表的尾元素
  • LRANGE key start stop //返回列表key中指定区间内的元素,区间以偏移量start和stop指定lrange test1 0 -1 #获取 test1 全部元素
  • BLPOP key [key …] timeout //从key列表表头弹出一个元素,若列表中没有元素,阻塞等待
    timeout秒,如果timeout=0,一直阻塞等待
  • BRPOP key [key …] timeout //从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待
    timeout秒,如果timeout=0,一直阻塞等待

List 应用场景

  • 常用数据结构
    • 栈(先进后出):LPUSH + LPOP
    • 队列(先进先出):LPUSH + RPOP
    • 阻塞队列(先进先出,若列表中没有元素,会阻塞):LPUSH + BRPOP
  • 微博和微信公众号信息流
    • 用户A 在公众号页面,可以看到关注的公众号发送的最新文章。可以用LPUSH 来实现。LPUSH userA (用户A的ID) msg1 msg2 (用户关注的公众号发送的文章ID)

Set 结构


Set 常用操作
  • SADD key member [member …] //往集合key中存入元素,元素存在则忽略,
    若key不存在则新建
  • SREM key member [member …] //从集合key中删除元素
  • SCARD key //获取集合key的元素个数
  • SMEMBERS key //获取集合key中所有元素
  • SISMEMBER key member //判断member元素是否存在于集合key中
  • SRANDMEMBER key [count] //从集合key中选出count个元素,元素不从key中删除
  • SPOP key [count] //从集合key中选出count个元素,元素从key中删除
  • SINTER key [key …] //交集运算
  • SINTERSTORE destination key [key …] //将交集结果存入新集合destination中
  • SUNION key [key …] //并集运算
  • SUNIONSTORE destination key [key …] //将并集结果存入新集合destination中
  • SDIFF key [key …] //差集运算
  • SDIFFSTORE destination key [key …] //将差集结果存入新集合destination中

Set 应用场景

  • 微信抽奖小程序
  • 查看微信朋友圈点赞记录
  • 微博关注模型:用户 A 打开另一个用户 B 界面可以看到
    • 共同关注:SINTER user:a user:b;
    • 我关注的人也关注他:SISMEMBER,查看用户 A 关注的人,他们关注的人中是否有用户 B。
    • 可能认识的人:SDIFF user:b user:a;用户 B 关注但用户 A 没有关注的人。

ZSet 有序列表类型


ZSet 常用操作
  • ZADD key score member [score member …] //往有序集合key中加入带分值元素
  • ZREM key member [member …] //从有序集合key中删除元素
  • ZCARD key //返回有序集合key中元素个数
  • ZSCORE key member //返回有序集合key中元素member的分值
  • ZINCRBY key increment member //为有序集合key中元素member的分值加上increment
  • ZRANGE key start stop [WITHSCORES] //正序获取有序集合key从start下标到stop下标的元素
  • ZREVRANGE key start stop [WITHSCORES] //倒序获取有序集合key从start下标到stop下标的元素
  • ZUNIONSTORE destkey keynums key [key …] //并集计算
  • ZINTERSTORE destkey keynums key [key …] //交集计算

ZSet 应用场景

  • 微博排行榜

Bitmap 结构


Bitmap 常用操作
  • SETBIT key offset value //将一个二进制数组的offset位置设置成value。value只能是0或者1。
  • GETBIT key offset //返回一个二进制数组的offset位置的值。
  • BITCOUNT key [start end [BYTE|BIT]] //返回二进制数组中1的个数
  • BITPOS key bit [start end [BYTE|BIT]] //返回bitmap中第一个值为bit的offset位置。
  • BITOP AND|OR|XOR|NOT destkey key [key …] //对两个bitmap做二进制的与或非计算。

Bitmap 应用场景

  • 记录每日签到

Hyperloglog 结构


Hyperloglog 常用操作
  • PFADD key [element [element …]] //往集合 key 中添加元素
  • PFCOUNT key [key …] //统计集合 key 不同元素的数量
  • PFMERGE destkey [sourcekey [sourcekey …]] //将多个hyperloglong数据整合成一条记录。

Hyperloglog 应用场景

  • 统计集合中不重复元素元素个数,适用于大数据量。
    • 根据用户访问记录统计网站的UV。

Geo 结构


Geo 常用操作
  • GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member …] //添加一个或多个地点
  • GEOPOS key [member [member …]] //返回地址的经纬度
  • GEODIST key member1 member2 [M|KM|FT|MI] //计算两个地点之间的距离
  • GEORADIUS key longitude latitude radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count
    [ANY]] [ASC|DESC] [STORE key|STOREDIST key] //查询某个经纬度地址附近的地点
  • GEOSEARCH key FROMMEMBER member|FROMLONLAT longitude latitude BYRADIUS radius
    M|KM|FT|MI|BYBOX width height M|KM|FT|MI [ASC|DESC] [COUNT count [ANY]] [WITHCOORD]
    [WITHDIST] [WITHHASH] //查询某个地点附近的地点
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值