目录
本章目标
Redis 配置文件
Redis 存储
Redis 事务
Redis 发布订阅
Redis 安全
本章目标
Redis 配置文件
Redis 的存储
Redis 的事务
Redis 发布订阅
Redis 安全
Redis 配置文件
在针对 Redis 进行进一步了解之前, 我们首先务必需要了解一下 Redis 的配置文件 "redis.conf", 该文件一般位于 Redis 的安装目录. 例如: 使用的是 Ubuntu 安装的 Redis, 我可以在 / etc/Redis/Redis.conf 找到该文件. Redis.conf 配置项说明如下所示
http://www.runoob.com/redis/redis-conf.html
Redis 存储
对于 Redis 对于数据的存储保障, 可以分为两种方式来存储 Redis 数据, 一种是使用 "快照", 另一种是 "只追加文件" 方式.
快照(RDB 存储)
只追加文(AOF 存储)
快照(RDB)
我们可以在 Redis.conf 找到如下段落
- # save ""
- save 900 1
- save 300 10
- save 60 10000
可以看到, Redis 的配置中已经默认替我们开启了快照模式的数据存储, 根据以上命令, 该存储规则是 "如果在 900 秒内存储 1 条记录, 进行快照; 如果满足 300 秒内存储 10 条记录, 进行快照; 如果满足 60 秒内存储 10000 条记录, 进行快照", 我们还可以针对快照存储模式进一步的进行配置.
- # The filename where to dump the DB
- dbfilename dump.rdb
我们可以在 Redis.conf 配置自定义快照存储的路径, 以便我们进行数据恢复.
如果需要恢复数据, 只需将备份文件 (dump.rdb) 移动到 Redis 安装目录并启动服务即可, 如果不知道 Redis 的安装目录可以在 Redis 客户端里面使用下面命令获得.
CONFIG GET dir
只追加文件(AOF)
我们可以在配置文件中找到 appendonly no , 将 no 改成 yes; 代表开启 AOF 数据存储方式. 同样, 我们可以自定义备份文件存储的位置.
appendfilename "appendonly.aof"
针对 AOF 的数据备份方式, 有三种模式, 分别是;
always | 每次写入命令都要写入磁盘
everysec | 每秒执行一次同步
no | 让操作系统来决定何时同步
我们可以在配置文件中, 找到 appendfsync everysec 修改适合自己的选择.
备份数据的建议
创建一个定时任务, 每小时和每天创建一个快照, 保存在不同的文件夹里.
定时任务运行时, 把太旧的文件进行删除. 例如只保留 48 小时的按小时创建的快照和一到两个月的按天创建的快照.
每天确保一次把快照文件传输到数据中心外的地方进行保存, 至少不能保存在 Redis 服务所在的服务器.
更多关于 Redis 数据的存储可以访问: https://segmentfault.com/a/1190000002906345
Redis 事务
对于 Redis 的事务其实和我们在编写 JDBC 的应用程序时所使用的事务是基本一致的, 有一点区别是, 当 Redis 的事务中有一条命令发生异常时, 并不会对数据进行回滚; 而 JDBC 会针对事务的回滚. 也是说 Redis 事务并没有维持其原子性.
Redis 事务流程
批量操作在发送 EXEC 命令前被放入队列缓存.
收到 EXEC 命令后进入事务执行, 事务中任意命令执行失败, 其余的命令依然被执行.
在事务执行过程, 其他客户端提交的命令请求不会插入到事务执行命令序列中.
Redis 事务命令
命令 | 详解 |
---|---|
MULTI | 标记一个事务块的开始。 |
EXEC | 执行所有事务块内的命令。 |
DISCARD | 取消事务,放弃执行事务块内的所有命令。 |
UNWATCH | 取消 WATCH 命令对所有 key 的监视。 |
Redis 事务演示
Redis 发布订阅
Redis 发布订阅 (pub/sub) 是一种消息通信模式: 发送者 (pub) 发送消息, 订阅者 (sub) 接收消息.
发布
订阅
Redis 发布订阅命令
命令 | 详解 |
---|---|
PSUBSCRIBE pattern [pattern ...] | 订阅一个或多个符合给定模式的频道。 |
PUBSUB subcommand [argument [argument ...]] | 查看订阅与发布系统状态。 |
PUBLISH channel message | 将信息发送到指定的频道。 |
PUNSUBSCRIBE [pattern [pattern ...]] | 退订所有给定模式的频道。 |
SUBSCRIBE channel [channel ...] | 订阅给定的一个或多个频道的信息。 |
UNSUBSCRIBE [channel [channel ...]] | 指退订给定的频道。 |
Redis 发布订阅演示
Redis 安全
我们可以在 Redis 的配置文件中设置 Redis 密码, 在客户端进行访问 Redis 的时候会进行密码验证;
查看是否设置密码
在 Redis 命令行中输入命令 CONFIG get requirepass
设置密码
我们可以在 Redis.conf 中找到# requirepass foobared 将注释去掉, 设置成自己的密码即可.
来源: https://www.cnblogs.com/jimisun/p/10045772.html