redis常用数据结构及使用场景

官网命令大全网址:http://www.redis.cn/commands.html

1、命令不区分大小写,而key是区分大小写

2、帮助命令: help @类型名词,如:help @list

一、九大数据结构

清空所有key(慎用)

flush all

1、String(字符类型)

① 常用:

set key value
get key

② 同时设置/获取多个键值

MSET key value [key value ....]
MGET key [key ....]

注:m:more

③ 递增/递减指定步长

递增1/递减1:

INCR key
DECR key

递增/递减指定步长:

INCRBY key increment
DECRBY key decrement

④ 获取字符串长度

STRLEN key

⑤ 分布式锁

setnx key value---不存在才创建
set key value [Ex seconds][PX milliseconds][NX|XX]---以保留指定时间单位进行创建

⑥ 使用场景

商品编号、订单号采用INCR命令生成

是否喜欢的文章

2、Hash(散列类型)

类似java中数据类型:Map<String,Map<Object,object>>

① 一次设置一个字段值/一次获取一个字段值

HSET key field value
HGET key field

② 一次设置多个字段值/一次获取多个字段值

HMSET key field value [field value ...]
HMGET key field [field ....]

③ 获取所有字段值

hgetall key

④ 获取某个key内的全部数量

hlen key

⑤ 删除一个key

hdel key field

⑥ 应用场景 购物车早期,当前小中厂可用

hmset cart:001 product001 1 product003 5 sumprice 500.0RMB
hgetall cart:001

临时决定增加3份商品product001的数量:

hincrby cart:001 product001 3

3、List(列表类型)

list数据结构是一个双端链表

① 向列表左边添加元素

LPUSH key value [value ...]

② 向列表右边添加元素

RPUSH key value [value ....]

③ 查看列表

LRANGE key start stop

④ 获取列表中元素的个数

LLEN key

⑤ 应用场景

微信文章订阅公众号

4、Set(集合类型)

注:集合中元素不重复

① 添加元素

SADD key member[member ...]

② 删除元素

SREM key member [member ...]

③ 获取集合中的所有元素

SMEMBERS key

④ 判断元素是否在集合中

SISMEMBER key member

⑤ 获取集合中的元素个数

SCARD key

⑥ 从集合中随机弹出一个元素,元素不删除

SRANDMEMBER key [数字]

⑦ 从集合中随机弹出一个元素,出一个删一个

SPOP key[数字]

⑧ 集合的差集运算A-B:属于A但不属于B的元素构成的集合

SDIFF key [key ...]

⑨ 集合的交集运算A∩B:属于A同时也属于B的共同拥有的元素构成的集合

SINTER key [key ...]

⑩ 集合的并集运算AUB:属于A或者属于B的元素合并后的集合

SUNION key [key ...]

应用场景:

① 微信抽奖小程序

1 用户ID,立即参与按钮sadd key 用户ID2 显示已经有多少人参与了,上图23208人参加SCARD key3 抽奖(从set中任意选取N个中奖人)
sadd key user001 user002 ...
SCARD key 多少人参与
SRANDMEMBER key 2 随机抽奖2个人,元素不删除
SPOP key 3 随机抽奖3个人,元素会删除
 

② 微信朋友圈点赞

sadd page:005 user001 user005 ...-------添加进点赞某文章集合
srem page:005 user005 -------某用户取消点赞,从集合中移除

③ 微博好友关注社交关系

 共同关注的人

sadd user:001 user004 user005 user003
sadd user:003 user005 user009 user002

--共同关注的人
sinter user:001 user003

--我关注的人也关注了他
smembers user001
smembers user003

④ QQ内推可能认识的人

取差集

sdiff user:001 user:003

5、SortedSet(有序集合类型,简称zset)

向有序集合中加入一个元素和该元素的分数

① 添加元素

ZADD key score member [score member ...]

② 按照元素分数从小到大的顺序 返回索引从start到stop之间的所有元素

ZRANGE key start stop [WITHSCORES]

③ 获取元素的分数

 ZSCORE key member

④ 删除元素

ZREM key member [member ...]

⑤ 获取指定分数范围的元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

⑥增加某个元素的分数

ZINCRBY key increment member

⑦ 获取集合中元素的数量

ZCARD key

⑧ 获得指定分数范围内的元素个数

ZCOUNT key min max

⑨ 按照排名范围删除元素

ZREMRANGEBYRANK key start stop

⑩ 获取元素的排名

1、从小到大

ZRANK key member

2、从大到小

ZREVRANK key member

应用场景:

1、根据商品销售对商品进行排序显示

思路:定义商品销售排行榜(sorted set集合),key为goods:sellsort,分数为商品销售数量。

商品编号1001的销量是9,商品编号1002的销量是15
zadd goods:sellsort 9 1001 15 1002
有一个客户又买了2件商品1001,商品编号1001销量加2
zincrby goods:sellsort 2 1001
求商品销量前10名ZRANGE goods:sellsort 0 9 withscores
                                                        

2、抖音热搜


抖音热搜1点击视频ZINCRBY hotvcr:20200919 1八佰
ZINCRBY hotvcr:20200919 15 八佰 2 花木兰2 展示当日排行前10条ZREVRANGE hotvcr:20200919 0 9 withscores

6、Bitmap(位图)

7、HyperLogLog(统计)

8、GEO(地理)

9、Stream(流)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章