redis 学习二
time : 20181018;
学习一些Redis的高级应用–Redis 命令行
Redis 发布订阅
1. Redis 发布订阅(pub/sub)是一种消息通信模式:发送者发送消息,订阅者(sub)接受消息
2. Redis 可以订阅任意数量的频道
3. 我们创建了订阅频道 : redisChat
subscribe redisChat ps : 不要关闭
4. 我们进行消息的发布 : 重新打开一个redis-cli
PUBLISH redisChat "woami"
Redis 事务
redis事务是一次可以执行多个命令,并且带有以下两个保证 :
1. 批量操作在执行 EXEC 命令前是放到队列缓存中的
2. 收到 EXEC 命令后,事务开始执行,事务中的任何命令执行失败,其余命令还会执行
3. 在事务执行过程中,其他客户端提交的请求不会插入到事务执行序列中
一个事务从开始执行需要经历三个阶段 :
1. 开始事务
2. 命令入列
3. 执行事务
实例 : 先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
redis 127.0.0.1:6379> GET book-name
QUEUED
redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis 127.0.0.1:6379> SMEMBERS tag
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
2) "C++"
3) "Programming"
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
Redis 数据备份和恢复
1. redis 数据备份
redis save 命令御用创建当前数据的备份
语法 : SAVE
实例 : SAVE : 该命令将在 redis 安装目录中创建dump.rdb文件
2. redis 数据恢复
如果需要恢复数据,只需要将备份文件(dump.rdb)移动到 redis 安装目录并重启服务即可;
获取 redis 目录可以使用 config 命令
config get dir : 获取 redis 目录
3. Bgsave : 创建 redis 备份文件,该命令在后台执行
Redis 性能测试
redis 性能测试是通过同时执行多个命令实现的
语法 :
redis-benchmark [option] [option value]
实例 : 同时执行10000个请求
redis-benchmark -n 10000 -q
redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q
主机为127.0.0.1,端口号 6379,执行的命令为 set,lpush,请求数为 10000,通过-q 参数让结果只显示每秒执行的请求数
Redis 管道技术
1. Redis 管道技术
redis 是一种基于客户端-服务器模型以及请求/响应协议的TCP服务,这意味着通常情况下一个请求会遵循以下步骤 :
1. 客户端向服务器发送一个查询氢气,并监听Socket返回,通常是以阻塞模式,等待服务器端响应
2. 服务端处理命令,并将结果返回给客户端
redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,不并最终一次性读取所有服务端的响应
2. 管道技术的优势 :
管道技术最显著的优势是提高了 redis 服务的性能