持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
Redis中几种基础数据类型的使用场景和使用方法
1:string,最常用,存储json等...
数字增减
递增:
incr key
增加指定数字:
incrby key 10
递减
decr key
减去指定数字
decrby key 10
使用场景:文章浏览量+1、点赞等
incr article:1001
incr,原子自增,线程安全
2:hash
Map<String,Map<String,Object>>
一次设置一个值
hset key field value
一次设置多个值
hmset key field value field value field value...
一次获取一个值
hget key field
一次获取多个值
hmget key field field field...
一次获取全部值
hgetall key
使用场景:购物车(hset 字符串 商品id 数量)
设置值:
hset shopcar:uid1001 21002 1
hset shopcar:uid1001 21015 3
hset shopcar:uid1001 21020 1
hset shopcar:uid1001 21021 10
查询:
hgetall shopcar:uid1001
3:list
向列表左边添加元素
lpush key value value value
向列表右边添加元素
rpush key value value value
查看列表
lrange key start stop
查看列表的长度
llen key
使用场景:存储商品评论信息
lpush items:comment:1001 {"id":21002,"name":"Huawei","date":1600484283054,"content":"评论内容"}
4:set,集合,不重复数据
有交集、并集、差集操作
-
使用场景1,抽奖:
参与抽奖:sadd key 用户id
查看总参与人数:scard key
抽奖(抽3个人):spop key 3
-
使用场景2,朋友圈点赞:
新增点赞:sadd pub:msg1001 点赞用户id
取消点赞:srem pub:msg1001 点赞用户id
展现所有点赞过的用户:smembers pub:msg1001
点赞用户数统计:scard pub:msg1001
判断某个朋友是否对楼主点赞过:sismember pub:msg1001 用户id
-
使用场景3,共同关注的人:
sadd group1 1001 1002 1003 1004 1005 sadd group2 1003 1004 1005 1006 1007 取交集 sinter group1 group2
5:zset
set类型的升级,有序集合类型,支持常用的添加,删除,范围读取操作,一般用做排行榜功能
使用场景,排行榜:
zadd scores_ranking 60 张三
zadd scores_ranking 90 悟空
zadd scores_ranking 80 李四
zadd scores_ranking 50 八戒
zadd scores_ranking 100 佛祖
看下存储的数据,已经给排好序了
取前三
zrevrange scores_ranking 0 2
取后三
zrange scores_ranking 0 2