栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Redis五大数据类型常用命令与使用场景总结

Java 更新时间:发布时间: 百科书网 趣学号

常用五种数据类型
字符串string
哈希hash
列表list
集合set
有序集合zset


——————————字符串string——————————
常见命令
set key value
mset key value1 [key2 value2...]
setnx key value  //存入一个不存在的key value,若成功返回1,存在返回0
get key
mget key1 [key2...]
del key [key2...]
expire key seconds  // 设置一个键过期时间

原子加减
incr key   key中的值加一
decr key  key中的值减一
incrby key increment  key中的值加上increment
decrby key increment  key中的值减去increment

应用场景
1)计数器,比如文章阅读量,转发次数,点赞次数
incr 文章id
2)分布式系统全局序列号
incrby orderid 10000   批量生成订单序列号
3)分布式锁,分布式session
setnx key
spring session + redis实现session共享

——————————哈希hash——————————
常见指令
hset key field value
hsetnx key field value
hmset key field value [filed1 value1 field2 value2...]
hget key field
hmget key field1 [field2...]
hdel key   
hdel key field1 [field2...]
hlen key  //返回hash表中field的数量
hgetall  key  //返回hash表中key所有的键值
hincrby key field increment   //给hash表中key中field键的值增加increment

应用场景
1)缓存对象
hmset user 1:name zhangsan 1:age 26
hmget user 1:name 1:age
1)购物车
用户id为key
商品id为field
商品数量为value

——————————list列表——————————
类似于链表结构
lpush key value [value1...]
rpush key value [value2...]
lpop key //移除并返回最左侧元素
rpop key //移除并返回最右侧元素
lrange key start stop  //返回列表key中指定区间内的元素,区间以偏移量start和stop指定

blpop key timeout //从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
brpop key timeout//从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待

应用场景
栈stack(FILO)
lpush+lpop
队列queue
lpush+rpop
阻塞队列blockingqueue
lpush+brpop
(有顺序的数据,比如消息流)


——————————set集合——————————
set常见命令
sadd key value [value1...]   //往集合key中存入元素,元素存在则忽略,若key不存在则新建
srem key value [value1...]   //从集合key中删除元素
smembers key //获取集合key中所有元素
scard key   //获取集合key的元素个数
sismember key member   //判断member元素是否存在于集合key中
srandmember key count    //从集合key中选出count个元素,元素不从key中删除
spop key count     //从集合key中选出count个元素,元素从key中删除

set集合操作
sinter key [key1...]   //交集运算
sinterstore  destination key [key1...]   //将交集结果存入新集合destination中
sunion key [key1...]   //并集运算
sunionstore  destination key [key1...]    //将并集结果存入新集合destination中
sdiff  key  [key1...]    //差集运算
sdiffstore  destination key [key1...]     //将差集结果存入新集合destination中

应用场景
1)微信抽奖小程序
从一批人当中抽取几个人
srandmember key [count]
或者抽完三等奖再抽二等奖...每次抽完删除
spop key 20
spop key 10
spop key 3

2)微信微博点赞,收藏(每个用户id只允许一次,不允许重复)

3)集合操作实现微博关注模型
共同关注 sinter zhangsanSet lisiSet
张三可能认识的人
sdiff zhangsanSet lisiSet

4)集合实现电商商品筛选
一个set存CPU型号为骁龙的所有手机
一个set存内存为8G的所有手机
一个set存系统为安卓的所有手机
sdiff set1 set2 set3完成筛选


——————————zset有序集合——————————
根据分值排序,分值相同根据value字典排序,英文字母默认排序
ZSet常用操作:
zadd key score member [score1 member1...]  //往有序集合key中加入带分值元素
zrem key member [member1...]//从有序集合key中删除元素
zscore key member   //返回有序集合key中元素member的分值
zincrby key increment member   //为有序集合key中元素member的分值加上increment
zcard key  //返回有序集合key中元素个数
zrange key start stop [withscores]   //正序获取有序集合key从start下标到stop下标的元素
zrerange key start stop [withscores]   //倒序获取有序集合key从start下标到stop下标的元素

 Zset集合操作:
zunionstore destkey numkeys key [key1...]   //计算给定的一个或多个有序集的并集,并存储在新的 key 中
zinterstore  destkey numkeys key [key1...]   //计算给定的一个或多个有序集的交集,并存储在新的 key 中

Zset应用场景
Zset集合操作实现排行榜
1)点击新闻
ZINCRBY  hotNews:20220901  1  守护香港
2)展示当日排行前十
ZRERANGE hotNews:20220901 0 9 WITHSCORES
3)七日搜索榜单计算
ZUNIOnSTORE hotNews:20220901-20220907 7 hotNews:20220901 hotNews:20220902 ... hotNews:20220907
 4)展示七日排行前十
ZRERANGE hotNews:20220901-20220907 0 9 WITHSCORES

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1072159.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号