本篇基于redis 4.0.11版本,学习发布订阅、事务、脚本、连接的相关命令。

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

序号命令描述事例结果
SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。创建了订阅频道名为redisChat:SUBSCRIBE redisChatReading messages... (press Ctrl-C to quit)

1) "subscribe"

2) "redisChat"

3) (integer) 1
PUBLISH channel message 将信息发送到指定的频道。将haha发布到mychannel渠道:publish mychannel haha本窗口:"2"   --返回订阅数量

订阅窗口:1)  "message"

 2)  "mychannel"

 3)  "haha"
PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。订阅my开头模式的频道:PSUBSCRIBE my*Reading messages... (press Ctrl-C to quit)

1) "psubscribe"  # 返回值的类型:显示订阅成功

2) "my*"   # 订阅的模式

3) (integer) 1   # 目前已订阅的模式的数量

----------------------

1) "pmessage"  # 返回值的类型:信息

2) "my*"   # 信息匹配的模式

3) "mychannel"  # 信息本身的目标频道

4) "haha"   # 信息的内容  
PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。打印所有活跃频道:PUBSUB CHANNELS

订阅者数量:PUBSUB NUMSUB mychannel
1) "mychannel"

2) "redisChat"

---------------

1) "mychannel"

2) (integer) 1
UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。  
PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。  

Redis 事务可以一次执行多个命令,收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行,在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

序号命令描述事例结果
DISCARD 取消事务,放弃执行事务块内的所有命令。127.0.0.1:6379> MULTI

OK

127.0.0.1:6379> SET greeting "hello"

QUEUED

127.0.0.1:6379> DISCARD

OK
 
MULTI 标记一个事务块的开始。127.0.0.1:6379> MULTI

OK

127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"

QUEUED

127.0.0.1:6379> GET book-name

QUEUED

127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"

QUEUED

127.0.0.1:6379> SMEMBERS tag

QUEUED

127.0.0.1:6379> EXEC
1) OK

2) "Mastering C++ in 21 days"

3) (integer) 3

4) 1) "Programming"

   2) "C++"

   3) "Mastering Series"
EXEC 执行所有事务块内的命令。
WATCH key [key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。WATCH lock lock_timesok
UNWATCH 取消 WATCH 命令对所有 key 的监视。UNWATCHok

Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL

序号命令描述事例结果
1EVAL script numkeys key [key ...] arg [arg ...]执行 Lua 脚本eval "return {KEYS[1],KEYS[2],KEYS[3],ARGV[1]}" 3 key1 key2 first second1) "key1"

2) "key2"

3) "first"

4) "second"
2EVALSHA sha1 numkeys key [key ...] arg [arg ...]执行 Lua 脚本  
3SCRIPT EXISTS script [script ...]查看指定的脚本是否已经被保存在缓存当中SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a1) (integer) 1
4SCRIPT FLUSH从脚本缓存中移除所有脚本  
5SCRIPT KILL杀死当前正在运行的 Lua 脚本  
6SCRIPT LOAD script将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本SCRIPT LOAD "return 'hello moto'"

"232fd51614574cf0867

b83d384a5e898cfd24e5a"

连接 redis 服务命令:

序号命令描述事例结果
1

AUTH password

验证密码是否正确  
2

ECHO message

打印字符串ECHO HAHA"HAHA"
3

PING

查看服务是否运行PING PONG # 客户端和服务器连接正常
4

QUIT

关闭当前连接  
5

SELECT index

切换到指定的数据库SELECT 2 OK
6CONFIG get requirepass是否设置了密码验证 1) "requirepass" 

2) "" # 密码
7CONFIG set requirepass "summer"设置密码 OK
8

config get maxclients

查询最大连接数 1) "maxclients"

2) "10000"
9client list连接到 redis 服务的客户端列表 id=1748 addr=127.0.0.1:56980 fd=8 name= age=30 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client

数据备份与恢复:

序号命令描述结果
1

save

该命令将在 redis 安装目录中创建dump.rdb文件OK
2

config  get  dir

输出的 redis 安装目录1) "dir"

2) "/tmp"
3

BGSAVE

该命令在后台执行Background saving started

上一篇:【Redis数据库】命令学习笔记——列表(list)+集合(set)+有序集合(sorted set)(17+15+20个超全字典版)

下一篇:【Redis数据库】Java 使用 jedis

04-25 14:24
查看更多