十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇“redis中的五大基础类型是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Redis中的五大基础类型是什么”文章吧。
创新互联公司自2013年起,先为通道等服务建站,通道等地企业,进行企业商务咨询服务。为通道企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
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 @类型名词
示例:
最常用
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,完成记录数字。
命令实践
和 Java 数据结构映射
Map
一次设置一个字段值
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
向列表左边添加元素
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
添加元素
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
常用命令
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中的五大基础类型是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。