千家信息网

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

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,本篇内容主要讲解"redis常用的数据结构及使用场景",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"redis常用的数据结构及使用场景"吧!官网命令大全网址
千家信息网最后更新 2024年11月28日redis常用的数据结构及使用场景

本篇内容主要讲解"redis常用的数据结构及使用场景",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"redis常用的数据结构及使用场景"吧!

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

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

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

一、九大数据结构

清空所有key(慎用)

flush all

1、String(字符类型)

① 常用:

set key valueget key

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

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

注:m:more

③ 递增/递减指定步长

递增1/递减1:

INCR keyDECR key

递增/递减指定步长:

INCRBY key incrementDECRBY key decrement

④ 获取字符串长度

STRLEN key

⑤ 分布式锁

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

⑥ 使用场景

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

是否喜欢的文章

2、Hash(散列类型)

类似java中数据类型:Map>

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

HSET key field valueHGET 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.0RMBhgetall 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 user003sadd user:003 user005 user009 user002--共同关注的人sinter user:001 user003--我关注的人也关注了他smembers user001smembers 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的销量是15zadd goods:sellsort 9 1001 15 1002有一个客户又买了2件商品1001,商品编号1001销量加2zincrby goods:sellsort 2 1001求商品销量前10名ZRANGE goods:sellsort 0 9 withscores

到此,相信大家对"redis常用的数据结构及使用场景"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0