docker部署redis使用键空间通知订阅
1. redis的键空间通知(keyspace notification) 大概意思是比如时间删除 或者 过期的时候发布的一个通知。通过一个通知来发布或修改一个状态。通常理解为 pub/sub(发布/订阅)。
键空间通知有两种类型key-space , key-event, 可以理解为key-space对应事件本身。比如del删除事件。 key-event是事件的名字name。
关于在配置消息订阅的命令,可查看redis.conf配置文件。如下
notify-keyspace-events
是 Redis 配置选项之一,用来设置哪些事件会触发通知(例如:键的过期、删除、修改等)。这个配置项通常会设置为一个包含特定字母的字符串,表示要订阅的事件类型。
各个字母表示的事件如下:
K:键的操作(如 set, del 等)。
E:键的过期事件。
A:所有事件。
g:字符串命令(例如 get)。
x:删除的事件。
2. 使用docker部署redis是没有redis.conf的配置文件的。需要下载redis.conf配置文件
http://download.redis.io/redis-stable/redis.conf
由于是win10系统, 把下载好的配置文件放到适合的目录中,然后开始notify-keyspace-events
把配置文件中的notify-keyspace-events前的注销#删掉,设置为:
启用键空间的过期通知和删除通知
notify-keyspace-events "Ex"
3. docker 部署
docker run -d -p 6379:6379 --name redis -v D:/redis/redis.conf:/usr/local/etc/redis/redis.conf redis:latest redis-server /usr/local/etc/redis/redis.conf
这条命令执行的步骤如下:
-d:后台运行容器。
-p 6379:6379:将容器的 6379 端口映射到宿主机的 6379 端口。
--name redis:给容器指定名称为 redis。
-v D:/redis/redis.conf:/usr/local/etc/redis/redis.conf:将宿主机的 D:/redis/redis.conf 配置文件挂载到容器中的 /usr/local/etc/redis/redis.conf。
redis:latest:使用 redis:latest 镜像。
redis-server /usr/local/etc/redis/redis.conf:通过 redis-server 启动 Redis 服务,指定配置文件 /usr/local/etc/redis/redis.conf。
启动成功后,可以查看docker logs redis日志是否启动成功。
4. 查看redis容器中的配置文件, 进入容器内部检查配置文件是否正确
docker exec -it redis /bin/bash
cat /usr/local/etc/redis/redis.conf
在powershell中
或者输入
docker exec -it redis redis-cli
输入: 是否开启成功了。
CONFIG GET notify-keyspace-events
5. 以上过程就是发布的,现在开始设置订阅,检查事件是否生效。
另开多一个powershell。观察键过期的通知, 使用PSUBSCRIBE订阅键空间事件通知:
127.0.0.1:6379> PSUBSCRIBE __keyevent@0__:expired
截图如下:表示正在监听
在另一个powershell中,设置一个键的过期事件,10秒之后,在上一个powershell能监听到
127.0.0.1:6379> SET mykey "some value" EX 10
说明配置已经成功。
原文地址:https://blog.csdn.net/deng_zhihao692817/article/details/144409590
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!