Redis 入门:redis 中的 key 失效机制| 学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速学习 Redis 入门:redis 中的 key 失效机制。

开发者学堂课程【使用 Redis 消息队列完成秒杀过期订单处理 :Redis 入门:redis 中的 key 失效机制】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/729/detail/13015


Redis 入门:redis中的key失效机制

 

redis 中的 key 失效机制

当 key 失效的时候,会发送一些通知

可以通过订阅某一个主题,接收 key 失效的消息通知(此通知;

时 redis 内部的事件处理机制)

其实除了这种通知之外,在 redis 内部当发生一些事件的时候,它会自动的也会发送一些通知呢,比如说当 key 失效的时候才会发送。

在 redis 里面操作,像 redis 里面存储出来的时候可以指定 key 的失效时间,当这条数据失效了之后,Ready 立马向某一个主题已经发送一条通知,能够发送通知,

当我们订阅了一个消息时也会接收失效机制。

redis 内部的事件处理机制处理机制.当存储到 redis 某一个数据,key 失效的时候,K 失效的时候会自动的向某一个主题里面来发送一个消息,而这是 redis 的内容,进行的我们可以通过。通过订阅这个主题来检测我们发送的所有消息。

完成这个功能,需要两件事情

*i:开启事件通知(修改 redis 启动的配置文件)

*ii:需要订阅的主题名称:

这个主题名称写起来比较奇怪,首先是两个下划线,

__keyevent@dbindex 后面是一个事件。

内部有十六个小的数据库,具体监听哪个仓库里K的变化

__keyevent@dbindex __:expired

:存储到的 redis 服务器:0号数据库

订阅的主题:__keyevent@dbindex __:expired  代表的就是0号数据库。

知道如果想要得到key失效的一个通知,需要干两件事。第一个开启事件的通知,这个事件通知就需要去修改 redis 启动的文件。Redis 启动文件在 redis 安装目录里找到。

启动配置文件:redis.windows.conf

右键点击打开文件,对于要修改的参数,

control F 查找目标:notify

找到 notify-keyspace-event 需要将它设计成 ex,设置成功后需要重新启动 redis 服务器,先 crtl C 关闭 redis 服务器再重新启动。

E: \Redis-x64-2.8.2103>redis-server.exe redis-windows.conf

前面是启动的命令,后面是指定启动的配置文件。

image.png

2、订阅主题

打开一个客户端程序,开始订阅某个消息,存储的信息都放到0号仓库里。

127.0.0.1:6379> subscribe keyevent@o_:expired

Reading messages..

.(press Ctri-C to quit)

"subscribe"

“keyevent@o__:expired"

(integer) 1

以上就完成订阅,之前解释过,订阅的是0号仓库里 key 失效通知,目前0号仓库里没有数据,再打开一个 redis 服务器客户端:

Redis-cli.exe

在其中设置一个值,

127.0.0.1:6379> set testKey "test"ok

127.0.0.1:6379>expire testKey 5-

上面这句话的意思就是将test的失效事件设置为五秒。五秒钟之后就会从redis服务器里面消除,也就是失效。

.127.0.0.1:6379>expire testKey 5

127.0.0.1:6379>ttl testKey

(integer) -2

127.0.0.1:6379>

-2表示当前的 testkey 已经失效了。

127.0.0.1:6379> subscribe keyevent@o_:expired.Reading messages...(press Ctri-c to quit)

1"subscribe"

2)”keyevent@0__:expired"3(integer)1

"message'

2“keyevent@o :expired3)"testKey"

马上就接收到了一个信息。0号仓库里有个 KEY 值失效了,这个 key 值叫做 testkey。

主要的目的就是通过 redis 来处理代金卷的一些过期问题,通过消息服务器来通知我们的 java 代码。某一个订单失效了。然后再进行修改,设置订单失效的状态。那么是否可以借助 redis 中的 key 失效通知,也就是说用户在获取到一个优惠卷的时候,就将优惠卷信息保存到 redis 服务器中,兵器设置超时时间。

当 redis 中数据失效时,就会发送一条消息通知接收到失效的消息通知,在 Java 代码端处理。

目前,一些前置性的信息已经讲解完毕,借用的就是 redis 中的一些消息通知,要完成的功能,当用户获取优惠卷的时候,将优惠卷信息放到 redis 服务器中,并且设置 redis 用户的一个失效时间,失效时间全部放置到 redis 服务器中,当 redis 中数据失效时,会自动发送一条消息通知,可以订阅这个消息,订阅这个消息就能够接收到当前的数据,接收之后就可以处理数据库中的消息,修改它的失效状态。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1天前
|
消息中间件 缓存 NoSQL
Redis 高并发竞争 key ,如何解决这个难点?
本文主要探讨 Redis 在高并发场景下的并发竞争 Key 问题,以及较为常用的两种解决方案(分布式锁+时间戳、利用消息队列)。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Redis 高并发竞争 key ,如何解决这个难点?
|
25天前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
79 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
28天前
|
存储 缓存 NoSQL
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
35 2
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
|
1月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
80 1
springboot的缓存和redis缓存,入门级别教程
|
16天前
|
NoSQL Unix Redis
Redis 键(key)
10月更文挑战第15天
28 1
|
22天前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
158 3
|
28天前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
51 8
|
23天前
|
缓存 监控 负载均衡
如何解决Redis热点Key问题?技术干货分享
【10月更文挑战第2天】在Redis的使用过程中,热点Key问题是一个常见的性能瓶颈。热点Key指的是那些被频繁访问的Key,它们可能导致Redis服务器的负载不均衡,进而影响整体性能。本文将深入探讨热点Key问题的成因、影响以及多种解决方案,帮助读者在实际工作中有效应对这一挑战。
41 3
|
24天前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
22 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
28天前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
22 3