通过命令和运用场景,带你了解Redis中的五大基础类型
本篇文章通过命令和运用场景,带大家了解一下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视频教程】
redis 命令查询:http://www.redis.cn/commands.html
备注: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
一次设置一个字段值
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中的五大基础类型的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Redis集群模式通过分片将Redis实例部署到多个服务器,提高可扩展性和可用性。搭建步骤如下:创建奇数个Redis实例,端口不同;创建3个sentinel实例,监控Redis实例并进行故障转移;配置sentinel配置文件,添加监控Redis实例信息和故障转移设置;配置Redis实例配置文件,启用集群模式并指定集群信息文件路径;创建nodes.conf文件,包含各Redis实例的信息;启动集群,执行create命令创建集群并指定副本数量;登录集群执行CLUSTER INFO命令验证集群状态;使

使用 Redis 指令需要以下步骤:打开 Redis 客户端。输入指令(动词 键 值)。提供所需参数(因指令而异)。按 Enter 执行指令。Redis 返回响应,指示操作结果(通常为 OK 或 -ERR)。

理解 Redis 源码的最佳方法是逐步进行:熟悉 Redis 基础知识。选择一个特定的模块或功能作为起点。从模块或功能的入口点开始,逐行查看代码。通过函数调用链查看代码。熟悉 Redis 使用的底层数据结构。识别 Redis 使用的算法。

如何清空 Redis 数据:使用 FLUSHALL 命令清除所有键值。使用 FLUSHDB 命令清除当前选定数据库的键值。使用 SELECT 切换数据库,再使用 FLUSHDB 清除多个数据库。使用 DEL 命令删除特定键。使用 redis-cli 工具清空数据。

Redis 使用单线程架构,以提供高性能、简单性和一致性。它利用 I/O 多路复用、事件循环、非阻塞 I/O 和共享内存来提高并发性,但同时存在并发性受限、单点故障和不适合写密集型工作负载的局限性。

要查看 Redis 中的所有键,共有三种方法:使用 KEYS 命令返回所有匹配指定模式的键;使用 SCAN 命令迭代键并返回一组键;使用 INFO 命令获取键的总数。

要从 Redis 读取队列,需要获取队列名称、使用 LPOP 命令读取元素,并处理空队列。具体步骤如下:获取队列名称:以 "queue:" 前缀命名,如 "queue:my-queue"。使用 LPOP 命令:从队列头部弹出元素并返回其值,如 LPOP queue:my-queue。处理空队列:如果队列为空,LPOP 返回 nil,可先检查队列是否存在再读取元素。

启动 Redis 服务器的步骤包括:根据操作系统安装 Redis。通过 redis-server(Linux/macOS)或 redis-server.exe(Windows)启动 Redis 服务。使用 redis-cli ping(Linux/macOS)或 redis-cli.exe ping(Windows)命令检查服务状态。使用 Redis 客户端,如 redis-cli、Python 或 Node.js,访问服务器。
