当前位置: 首页 > news >正文

Redis 只会用缓存?16种妙用让同事直呼牛X

1、缓存

String 类型

例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。

2、数据共享分布式

String 类型,因为 Redis 是分布式的独立服务,可以在多个应用之间共享

例如:分布式 Session

<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>

3、分布式锁

String 类型 setnx 方法,只有不存在时才能添加成功,返回 true

public static boolean getLock(String key) { Long flag = jedis.setnx(key, "1"); if (flag == 1) { jedis.expire(key, 10); } return flag == 1; } public static void releaseLock(String key) { jedis.del(key); }

4、全局 ID

int 类型,incrby,利用原子性

incrby userid 1000

分库分表的场景,一次性拿一段

5、计数器

int 类型,incr 方法

例如:文章的阅读量、微博点赞数、允许一定的延迟,先写入 Redis 再定时同步到数据库

6、限流

int 类型,incr 方法

以访问者的 ip 和其他信息作为 key,访问一次增加一次计数,超过次数则返回 false

7、位统计

String 类型的 bitcount(1.6.6 的 bitmap 数据结构介绍)

字符是以 8 位二进制存储的

set k1 a setbit k1 6 1 setbit k1 7 0 get k1 /* 6 7 代表的 a 的二进制位的修改 a 对应的 ASCII 码是 97,转换为二进制数据是 01100001 b 对应的 ASCII 码是 98,转换为二进制数据是 01100010 因为 bit 非常节省空间(1 MB=8388608 bit),可以用来做大数据量的统计。 */

例如:在线用户统计,留存用户统计

setbit onlineusers 01 setbit onlineusers 11 setbit onlineusers 20

支持按位与、按位或等等操作

BITOPAND destkey key [key ...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。 BITOPOR destkey key [key ...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。 BITOPXOR destkey key [key ...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。 BITOPNOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey 。

计算出 7 天都在线的用户

BITOP "AND" "7_days_both_online_users" "day_1_online_users" "day_2_online_users" ... "day_7_online_users"

8、购物车

String 或 hash。所有 String 可以做的 hash 都可以做

购物车数据结构

  • key:用户 id;field:商品 id;value:商品数量。
  • +1:hincr。-1:hdecr。删除:hdel。全选:hgetall。商品数:hlen。

9、用户消息时间线 timeline

list,双向链表,直接作为 timeline 就好了。插入有序

10、消息队列

List 提供了两个阻塞的弹出操作:blpop/brpop,可以设置超时时间

  • blpop:blpop key1 timeout 移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  • brpop:brpop key1 timeout 移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

上面的操作。其实就是 java 的阻塞队列。学习的东西越多。学习成本越低

  • 队列:先进先除:rpush blpop,左头右尾,右边进入队列,左边出队列
  • 栈:先进后出:rpush brpop

11、抽奖

自带一个随机获得值

spop myset

12、点赞、签到、打卡

点赞数据结构

假如上面的微博 ID 是 t1001,用户 ID 是 u3001

用 like:t1001 来维护 t1001 这条微博的所有点赞用户

  • 点赞了这条微博:sadd like:t1001 u3001
  • 取消点赞:srem like:t1001 u3001
  • 是否点赞:sismember like:t1001 u3001
  • 点赞的所有用户:smembers like:t1001
  • 点赞数:scard like:t1001

是不是比数据库简单多了。

13、商品标签

商品标签示例

老规矩,用 tags:i5001 来维护商品所有的标签。

  • sadd tags:i5001 画面清晰细腻
  • sadd tags:i5001 真彩清晰显示屏
  • sadd tags:i5001 流程至极

14、商品筛选

// 获取差集 sdiff set1 set2 // 获取交集(intersection) sinter set1 set2 // 获取并集 sunion set1 set2

商品筛选示例

假如:iPhone11 上市了

sadd brand:apple iPhone11 sadd brand:ios iPhone11 sad screensize:6.0-6.24 iPhone11 sad screentype:lcd iPhone 11

筛选商品,苹果的、ios 的、屏幕在 6.0-6.24 之间的,屏幕材质是 LCD 屏幕

sinter brand:apple brand:ios screensize:6.0-6.24 screentype:lcd

15、用户关注、推荐模型

follow 关注 fans 粉丝

相互关注:

  • sadd 1:follow 2
  • sadd 2:fans 1
  • sadd 1:fans 2
  • sadd 2:follow 1

我关注的人也关注了他(取交集):

  • sinter 1:follow 2:fans

可能认识的人:

  • 用户 1 可能认识的人(差集):sdiff 2:follow 1:follow
  • 用户 2 可能认识的人:sdiff 1:follow 2:follow

16、排行榜

id 为 6001 的新闻点击数加 1:zincrby hotNews:20190926 1 n6001

获取今天点击最多的 15 条:zrevrange hotNews:20190926 0 15 withscores

http://www.jsqmd.com/news/604155/

相关文章:

  • 319嵌入式
  • 3大技术突破重构Steam资源管理:Onekey Depot清单工具深度解析
  • 写程序演唱会应援灯牌薄片,轻便高亮,输出:粉丝经济小单,量大快出。
  • Abaqus在铁路轨道建模及相关耦合分析中的探索
  • TranslucentTB任务栏透明美化工具:从安装失败到完美运行的完整指南
  • 电动夹爪厂商的技术优势与产品规格,推荐2026年优质电动夹爪厂商 - 品牌2026
  • 告别Steam清单配置烦恼:Onekey智能配置工具的优雅解决方案
  • Axure RP本地化技术指南:从英文界面到全中文工作流
  • 从训练到上线:在快马平台实战部署一个基于anaconda的机器学习web应用
  • 讲透100个最核心的硬件电路-设计实战专栏:购买权益计划B05
  • GD32F4移植实战:基于Cube HAL库的USB虚拟串口问题排查与适配
  • 21天学会基于 Linux 的 NPU 固件开发--12.2 大模型端侧部署挑战:量化/剪枝/蒸馏
  • 从原理到实践:Advancing Front算法在三维表面重建中的核心机制与优化策略
  • Python 3.14 JIT启用即高危?揭秘JIT编译器在容器环境中的seccomp绕过风险与eBPF实时拦截方案
  • 终极指南:如何在Windows 10上完整部署Android子系统(WSA)技术方案
  • 三轴姿态传感器选型指南:从QMI8658C到MPU6050的5个关键参数对比
  • 告别默认丑样式!手把手教你用WPF的ControlTemplate打造高颜值TreeView(附完整XAML代码)
  • 终极B站资源下载解决方案:BiliTools跨平台工具箱完全指南
  • 华三交换机Console口密码清除
  • 利用快马平台十分钟搭建worldmonitor数据监控可视化原型
  • ngx_create_listening
  • IndexTTS 2.0对比实测:零样本克隆与传统训练效果差异
  • Scratch趣味编程:从零打造水果接龙小游戏
  • 基于Matlab Simulink的单相PWM整流器仿真模型:全桥整流,电压电流PI双闭环控制...
  • 智能化 SaaS 招聘系统全解析:核心功能与企业招聘价值
  • ADRV9009网口驱动避坑指南:解决FreeRTOS下LWIP长时间通信宕机问题
  • 效率飙升:快马AI批量处理网址,自动生成打印就绪文档
  • 【自动驾驶C++部署黄金法则】:20年老司机亲授5大避坑指南,90%团队在第3步就翻车?
  • Avantage 6.9.0 XPS数据处理软件免费下载
  • SEO_从零开始,手把手教你做好站内SEO优化(238 )