Redis 发布订阅、事务、脚本、连接、HyperLogLog

欢迎大家加入 459479177QQ群进行交流

本次主要介绍Redis的发布订阅、事务、脚本、连接、HyperLogLog

一、发布订阅

1>psubscribe,订阅一个或多个指定的频道

Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "tv1"
3) (integer) 1
127.0.0.1:6379> psubscribe tv2 tv3                \\指定订阅2个频道tv2 tv3
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "tv2"
3) (integer) 1
1) "psubscribe"
2) "tv3"
3) (integer) 2

2>pubsub查看发布订阅系统

127.0.0.1:6379> PUBSUB channels
(empty list or set)

3>publish给指定channel发送message

\\先订阅一个channel,然就一直监听着
127.0.0.1:6379> psubscribe tv1
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "tv1"
3) (integer) 1
1) "pmessage"
2) "tv1"
3) "tv1"
4) "test"
\\使用publish指定channel发送message
127.0.0.1:6379> publish www.jinr.com  "test"
(integer) 1

4>punsunbscribe退订所有给定的频道

redis 127.0.0.1:6379> PUNSUBSCRIBE mychannel     \\官方的例子
1) "punsubscribe"
2) "a"
3) (integer) 1

5>sunbscribe订阅一个或多个频道信息

redis 127.0.0.1:6379> SUBSCRIBE mychannel         \\官方给 例子
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
1) "message"
2) "mychannel"
3) "a"

6>unsubscribe指定退订的频道

redis 127.0.0.1:6379> UNSUBSCRIBE mychannel         \\官方的例子
1) "unsubscribe"
2) "a"
3) (integer) 0

二、事务

1>multi标记事务开始

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name sunshine
QUEUED
127.0.0.1:6379> set name sunshineboy
QUEUED

2>exec执行所有事务块内的命令

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name sunshine
QUEUED
127.0.0.1:6379> set name sunshineboy
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
127.0.0.1:6379> get name 
"sunshineboy"

3>discard取消所有事务块内的命令

127.0.0.1:6379> get name 
"sunshineboy"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name tom
QUEUED
127.0.0.1:6379> exec
1) OK
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name jeery
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> get name
"tom"

4>watch乐观锁监视一个或多个key,如果在这个事务之前执行则打断该事务

127.0.0.1:6379> watch name 
OK
127.0.0.1:6379> set name jeery            \\在执行multi事务前
OK
127.0.0.1:6379> multi 
OK
127.0.0.1:6379> set name sunshine
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get name
"jeery"

5>unwatch取消乐观锁,停止监视一个或多个key

127.0.0.1:6379> watch name 
OK
127.0.0.1:6379> unwatch
OK

三、脚本

1>eval执行lua脚本

127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second1
1) "key1"
2) "key2"
3) "first"
4) "second1"
127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first2 second1
1) "key1"
2) "key2"
3) "first2"
4) "second1"
127.0.0.1:6379> eval "return {KEYS[1],ARGV[1]}" 1  key1 tom
1) "key1"
2) "tom"

2>script load添加脚本到缓存,但不执行

127.0.0.1:6379> script load "return sunshine"
"2e985836734751e115ec1eb4762d68ff62b9ca26"

3>script 杀死一个lua脚本

redis 127.0.0.1:6379> SCRIPT KILL
OK

4>script flush从缓存移除所有脚本

127.0.0.1:6379> script flush
OK

5>script exsits 查看一个缓存是否存在

127.0.0.1:6379> script load "return ‘sunshine‘"
"f3d9b175455690a552555fa76ab4211638248c5b"
127.0.0.1:6379> script exists f3d9b175455690a552555fa76ab4211638248c5b
1) (integer) 1
127.0.0.1:6379> script flush 
OK
127.0.0.1:6379> script exists f3d9b175455690a552555fa76ab4211638248c5b
1) (integer) 0

6>evalsh执行一个lua脚本

127.0.0.1:6379> script load "return ‘sunshine‘"
"f3d9b175455690a552555fa76ab4211638248c5b"
127.0.0.1:6379> evalsha "f3d9b175455690a552555fa76ab4211638248c5b" 0
"sunshine"

四、连接

1>select 切换指定数据库,默认0-15

127.0.0.1:6379> select 0
OK
127.0.0.1:6379> select 5
OK
127.0.0.1:6379[5]> select 10
OK
127.0.0.1:6379[10]> select 15
OK
127.0.0.1:6379[15]> select 16
(error) ERR invalid DB index

2>quit关闭当前连接当然还有其他方法exit或者Crtl+c

127.0.0.1:6379> quit
[[email protected]_master ~]# redis-server -a xxxx
6467:C 28 Sep 22:24:12.514 # Fatal error, can‘t open config file ‘-a‘
[[email protected]_master ~]# redis-cli -a xxxx
127.0.0.1:6379> exit
[[email protected]_master ~]# redis-cli -a xxxx
127.0.0.1:6379> 
[[email protected]_master ~]#

3>ping,测试是否redis是否存活

127.0.0.1:6379> ping
PONG
\\打开new session
[[email protected]_master ~]# killall redis-server
[[email protected]_master ~]# 
\\再次执行ping
127.0.0.1:6379> ping
Could not connect to Redis at 127.0.0.1:6379: Connection refused

4>echo更bash一样

127.0.0.1:6379> echo Sunshine
"Sunshine"
127.0.0.1:6379> echo SunshineBoy
"SunshineBoy"
127.0.0.1:6379> echo SunshineBoySFZ
"SunshineBoySFZ"

5>auth认证,在配置文件设定

[[email protected]_master ~]# vim  /usr/local/redis3.0.4/etc/redis.conf 

################################## SECURITY ###################################
... \\省略介绍信息
#
requirepass PASSWORD        \\设定密码并保存退出重启redis-server

[[email protected]_master ~]# redis-cli 
127.0.0.1:6379> kys *
(error) ERR unknown command ‘kys‘
127.0.0.1:6379> AUTH PASSWORD    \\你在配置文件设定的密码
OK
127.0.0.1:6379> keys *
1) "name"

五、HyperLogLog

1>pfadd指定一个元素到HyperLogLog

127.0.0.1:6379> pfadd pfkey a b c d e f g
(integer) 1
127.0.0.1:6379> pfcount pfkey
(integer) 7

2>pfcount显示返回给定HyperLogLog基数

127.0.0.1:6379> pfadd pfkey a b c d e f g
(integer) 1
127.0.0.1:6379> pfcount pfkey
(integer) 7
127.0.0.1:6379> pfadd pfkey a b c d e f g
(integer) 0
127.0.0.1:6379> pfadd pfkey a b c d e f g
(integer) 0
127.0.0.1:6379> pfcount pfkey
(integer) 7

3>pgmerge将多个HyperLogLog合并为一个

127.0.0.1:6379> pfadd pfkey3 aa bb cc dd 
(integer) 1
127.0.0.1:6379> pfadd pfkey4 a b c d
(integer) 1
127.0.0.1:6379> pfcount pfkey3
(integer) 4
127.0.0.1:6379> pfcount pfkey4
(integer) 4
127.0.0.1:6379> pfmerge pfkey5 pfkey3 pfkey4 
OK
127.0.0.1:6379> pfcount pfkey5
(integer) 8

至此Redis发布订阅、事务、脚本、连接、HyperLogLo就介绍完毕啦~明天或者后天就会谈到Redis服务器命令~ ^-^

欢迎大家加入 459479177QQ群进行交流

时间: 2024-08-03 11:24:40

Redis 发布订阅、事务、脚本、连接、HyperLogLog的相关文章

redis 发布订阅、geo、bitmap、hyperloglog

1.发布订阅 简介 发布订阅类似于广播功能.redis发布订阅包括 发布者.订阅者.Channel 命令 命令 作用 时间复杂度 subscribe channel 订阅一个频道 O(n) unsubscribe channel ... 退订一个/多个频道 O(n) publish channel msg 将信息发送到指定的频道 O(n+m),n 是频道 channel 的订阅者数量, M 是使用模式订阅(subscribed patterns)的客户端的数量 pubsub CHANNELS 查

Redis发布订阅机制

原文:Redis发布订阅机制 1. 什么是Redis Redis是一个开源的内存数据库,它以键值对的形式存储数据.由于数据存储在内存中,因此Redis的速度很快,但是每次重启Redis服务时,其中的数据也会丢失,因此,Redis也提供了持久化存储机制,将数据以某种形式保存在文件中,每次重启时,可以自动从文件加载数据到内存当中.  Redis的架构包括两个部分:Redis Client和Redis Server.Redis客户端负责向服务器端发送请求并接受来自服务器端的响应.服务器端负责处理客户端

Sprint Boot如何基于Redis发布订阅实现异步消息系统的同步调用?

前言 在很多互联网应用系统中,请求处理异步化是提升系统性能一种常用的手段,而基于消息系统的异步处理由于具备高可靠性.高吞吐量的特点,因而在并发请求量比较高的互联网系统中被广泛应用.与此同时,这种方案也带来了调用链路处理上的问题,因为大部分应用请求都会要求同步响应实时处理结果,而由于请求的处理过程已经通过消息异步解耦,所以整个调用链路就变成了异步链路,此时请求链路的发起者如何同步拿到响应结果,就需要进行额外的系统设计考虑. 为了更清晰地理解这个问题,小码哥以最近正在做的共享单车的IOT系统为例,给

RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用

本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Redis发布订阅—Pub/Sub模式或者说是观察者模式.我想大家即使没有使用过,也已经耳熟能详了. 先简单举例说明下应用场景,在场景中我们可以分析到其优势在哪. 比如你的线上应用应用,你想设置一个日志报警系统,当应用出现异常的时候,立马发送通知给你,可能是短信的形式,也可能是邮件的形式.当然如果只将报

Redis 发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 . client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端: 实例 以下实例演示了发布订阅是如何工作的.在我们实例中我们创建了订阅频道名为 redi

Redis发布订阅使用方法

Redis发布订阅 发布订阅模式中发布消息的为publisher即发布者,接收消息的为subscriber即订阅者.在Redis中,所有的消息通过channel即频道进行发布,一个发布者可以向多个channel发布消息,一个订阅者也可以订阅多个channel.Redis不对消息进行持久化,如果消息发布时订阅者还没有进行订阅,则不会再收到此消息. 发布订阅命令 命令 格式 说明 PUBLISH PUBLISH channel message 发布message到指定的channel SUBSCRI

Redis发布订阅

Redis 的 pub sub实现了邮件系统,发送者(在 Redis 术语中被称为发布者)发送的邮件,而接收器(用户)接收它们.由该消息传送的链路被称为信道. Redis客户端可以订阅任何数目的通道. 例子 以下举例说明如何发布用户的概念工作.在下面的例子给出一个客户端订阅一个通道名为redisChat redis 127.0.0.1:6379> SUBSCRIBE redisChat Reading messages... (press Ctrl-C to quit) 1) "subsc

利用Redis发布订阅完成tomcat集群下的消息通知

博主是刚入职半年的新手,如果有说的不对的地方请各位大佬见谅! 这是博主的第一篇博客,可能排版以及一些描述有不合理的地方还请勿喷,希望大家尽可能的多给我这样的新手一些鼓励让我能在写博客的道路上走下去. 进入正题,首先开发背景 近期公司的一些项目上出现了内存溢出的问题,究其原因是缓存的数据量太大导致jvm内存溢出,产品的架构上比较老所以针对缓存这块,领导叫我去重构移植到Redis中,博主之前并没有学习过Redis以及关于分布式系统的并发问题,所以也是对我的一次挑战,还好没有辜负领导的期望在期望时间之

Linux 安装redis,redis发布订阅,持久化

安装redis 1.安装redis的方式 -yum (删除这个yum安装的redis,我们只用源码编译安装的) -rpm -源码编译 2.删除原本的redis yum remove redis -y 3.下载redis源码 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 4.解压缩 tar -zxf redis-4.0.10.tar.gz 5.切换redis源码目录 cd redis-4.0.10.tar.gz 6.编译源文件