共计 3380 个字符,预计需要花费 9 分钟才能阅读完成。
这篇“Redis 中的五大基础类型是什么”文章的知识点大部分人都不太理解,所以丸趣 TV 小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Redis 中的五大基础类型是什么”文章吧。
redis 传统 5 大数据类型的运用
redis 传统 5 大数据类型的落地应用
Redis 介绍:
Redis 是一个开源(BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)] 与范围查询,bitmaps,hyperloglogs 和 地理空间(geospatial)索引半径查询。Redis 内置了 复制(replication),LUA 脚本(Lua scripting),LRU 驱动事件(LRU eviction),事务(transactions)和不同级别的 磁盘持久化(persistence),并通过 Redis 哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
备注:redis 命令不区分大小写,而 key 是区分大小写的
查询命令帮助:
help @类型名词
示例:
string 字符串类型
最常用
set key vuue
getkey
同时设置 / 获取多个键值
MSET key value [key value …]
MGET key [key ,,,]
数值增减
递增数字 incr key
增加指定的整数 incrby key increment
递减数值 decr key
减少指定的整数 decrby key decrement
获取字符长度
STRLEN key
分布式锁
setnx key value
set key value [EX seconds] [PX milliseconds] [NX|XX]
EX: key 在多少秒后过期
PX: key 自多少毫秒后过期
NX: 当 key 不存在的时候,才创建 key. 效果等同于 setnx
XX: 当 key 存在的时候,覆盖 key
运用场景
商品编号、订单号采用 INCR 命令生成
是否喜欢文章点赞
阅读数:只要点击了 rest 地址,直接使用 incr key 命令增加一个数字 1,完成记录数字。
命令实践
hash 哈希类型
和 Java 数据结构映射
Map Stirng, Map Object, Object
一次设置一个字段值
HSET key field value
一次获取一个字段值
HGET key field
一次设置多个字段值
HMSET key field value [fild value …]
一次获取多个字段值
HMGET key field [field …]
获取所有字段值
hgetall key
获取某个 key 内的全部数量
hlen
删除一个 key
hdel
命令演示
应用场景
购物车的早期,当前中小厂可以使用
新增商品 — hset shopcar:uid1024 334488 1
新增商品 — hset shopcar:uid2014 334477 1
增加商品数量 — hincrby shopcar:uid1024 334477 1
商品总数 — hlen shopcar:uid1024
全部选择 — hgetall shopcar:uid1024
list 列表类型
向列表左边添加元素
lpush key value [value …]
向列表右边添加元素
rpush key value [value …]
查看列表
lrange key start stop
获取列表中元素的个数
llen key
命令使用
应用场景
微信文章订阅公众号
1、【xx 宝】和【xx 报】发布了文章分别是 11 和 22
2、作者关注了他们两个,只要他们发布了新的文章,就会推送到我的 list
lpush likearticle: uid1024 11 22
3、查看作者自己的订阅号的全部文章,类似分页,下面 0-10 就是 一次显示 10 条 lrange likearticle:uid1024 0 10
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 共同拥有的元素
simter key [key …]
集合的并集运算 A v B
属于 A 或者属于 B 的元素合并后的集合
sunion key [key …]
运用场景
微信抽奖小程序
1、用户 id,立即参与,sadd key 用户 id
2、显示已经有多少人参与了当前有 67231 人参与,scard key
3、抽奖(从 set 中任意选取 N 个中奖人)
srandmember key 2 随机抽奖 2 个人,元素不会删除
spop key 3 司机抽奖 3 个人,元素会删除
微信朋友圈点赞
1、新增点赞 ; sadd pub:msgid 点赞用户 id1 点赞用户 id2
2、取消点赞;srem pub:msgid 点赞用户 id
3、展示所有点过赞的用户 smembers pub:msgid
4、点赞用户数统计,就是常见的待点赞的红色数数字 scard pub:msgid
5、判断某个朋友是否对楼主点过赞,sismember pub:msgid 用户 id
微博好友关注社交关系
共同关注的人
sadd s1 1 2 3 4
sadd s2 2 3 6 8
sinter s1 s2
共同关注:我去某人的微博,马上获取和某人共同关注的人
我关注的人,也关注了他(大家爱好相同)
我关注了华为余承东,余承东也关注了张召动,我和余总有共同的爱好
sadd s1 1 2 3 4 5
sadd s2 3 4 5 6 7
sismember s1 3
sismember s2 3
QQ 内推可能认识的人
sadd s1 1 2 3 4 5
sadd s2 3 4 5 6 7
// 共同好友
sinter s1 s2
// 差集
sdiff s1 s2
sdiff s2 s1
zset 有序集合
常用命令
1、向有序集合中添加一个元素和该元素的分数
2、添加元素
ZADD key score member [score member …]
3、按照元素分数从小到达的顺序返回索引从 strat 到 stop 之间的所有元素
zrange key start stop [WITHSORES]
4、获取元素的分数
zscore key member [member …]
5、删除元素
zrem key member [member …]
6、获取指定分数范围的元素
zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
7、增加某个元素的分数
zincrby key increment member
8、获取集合中元素的数量
zcard key
9、获得指定分数范围内的元素个数
zcount key min max
10、按照排名范围删除元素
zremrangebyrank key start stop
11、获取元素的排名
从小到大 zrank key member
从大到小 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 10001
求商品销量前 10 名 zrange goods:sellsort 0 10 withscores
2、抖音热搜
1、点击视频
ZINCRBY hotavi:20220203 1 八百
ZINCRBY hotavi:20220203 15 八百 2 花木兰
2、展示当日排行前 10 条
zrevrange hotavi:20220203 0 9 withscores
以上就是关于“Redis 中的五大基础类型是什么”这篇文章的内容,相信大家都有了一定的了解,希望丸趣 TV 小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注丸趣 TV 行业资讯频道。