Redis高效处理:字符串、哈希、列表和有序集合
摘要助手
切换
SummaryGPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往订阅 💥
前往评论 💬
👀 部署教程
Redis高效处理:字符串、哈希、列表和有序集合
dong4j基础数据结构
字符串
字符串类型的值实际可以 是字符串(简单的字符串、复杂的字符串(例如 JSON、XML))、数字 (整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能 超过 512MB。
1 | set key value [ex seconds] [px milliseconds] [nx|xx] |
set 命令有几个选项:
- ex seconds:为键设置秒级过期时间。
- px milliseconds:为键设置毫秒级过期时间。
- nx:键必须不存在,才可以设置成功,用于添加。
- xx:与 nx 相反,键必须存在,才可以设置成功,用于更新。
set、setnx、set xx 的区别
1 | get name |
批量处理
1 | mset a 1 b 2 c 3 |
计数操作
1 | 自增 |
应用场景
由于 Redis 的单线程命令处理机制,如果有多个客户端同时执行 setnx key value, 根据 setnx 的特性只有一个客户端能设置成功,setnx 可以作为分布式锁的一种实现方案
- 缓存功能
- 计数
1 | long incrVideoCounter(long id) { |
共享 Session
限速
限制获取验证码的频率 一分钟不能超过 5 次
1 | phoneNum = "138xxxxxxxx"; |
哈希
常用操作
1 | 设置值 |
使用场景
1 | UserInfo getUserInfo(long id) { |
列表
列表中的每个字符串 称为元素(element),一个列表最多可以存储 2 32 -1 个元素。
在 Redis 中,可 以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列 表、获取指定索引下标的元素等
常用操作
操作类型 | 操作 |
---|---|
添加 | rpush lpush linsert |
查询 | lrange lindex llen |
删除 | lpop rpop lrem ltrim |
修改 | lset |
阻塞操作 | blpop brpop |
1 | 向 poivt 前或后插入元素 |
使用场景
1. 消息队列
Redis 的 lpush+brpop 命令组合即可实现阻塞队列,生产 者客户端使用 lrpush 从列表左侧插入元素,多个消费者客户端使用 brpop 命令 阻塞式的“抢”列表尾部的元素,多个客户端保证了消费的负载均衡和高可用性。
2. 文章列表
场景使用口诀
- lpush+lpop=Stack(栈)
- lpush+rpop=Queue(队列)
- lpsh+ltrim=Capped Collection(有限集合)
- lpush+brpop=Message Queue(消息队列)
集合
有序集合
键的管理
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果