高级命令
- keys * 返回满足条件的所有key,可以模糊匹配
- exists 是否存在指定的key
- persist 取消过期时间
- select 选择数据库 (0-15,总共16个数据库)
- move key index 将当前数据库的 key 移动到给定的数据库 db 当中
- randomkey 随机返回数据库里的一个key
- rename 重命名key
- echo 打印命令
- dbsize 查看数据库key的数量
- info 获取数据库的信息
- config get 获取配置信息
- flushdb 清空数据库
Redis安全
- 定期打补丁
- 禁止一些高危命令
- 以低权限运行 Redis 服务
- 禁止外网访问 Redis
- 设置访问密码 足够复杂,防止暴力破解
- 访问权限 内网通过acl限制可以访问redis的ip和端口
Redis部署方式-
单点模式
- 安装完以后直接启动 ./redis-server ../redis.conf
主从模式
- 一个master可以拥有多个slave,多个slave同时连接一个master,节点在复制时不会影响master对外提供服务,提供系统的伸缩性。
- 主从复制的过程 :slave与master建立连接,发送sync同步命令; master开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存;后台完成保存后,就将文件发送给slave ;slave将此文件保存到硬盘上
- 配置 :修改redis.conf, 增加slaveof配置,设置masterauth
哨兵模式
- 概述 :支持集群
- 版本 :运行Sentinel
- 配置 :Sentinel 选举 ;版本以及版本传机制播
- 一致性
- 持久化
Redis Cluster
- Redis Cluster是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构达到负载均衡的目的。
- 数据分布理论: 分布式数据库首要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。常见的分区规则有哈希分区和顺序分区。Redis Cluster采用哈希分区规则,因此接下来会讨论哈希分区规则。
- 常见的哈希分区有以下几种: 节点取余分区 ;一致性哈希分区 ;虚拟槽分区
Redis集群数据分区
Redis集群功能限制
- key批量操作支持有限。如:MSET``MGET,目前只支持具有相同slot值的key执行批量操作。
- key事务操作支持有限。支持多key在同一节点上的事务操作,不支持分布在多个节点的事务功能。
- key作为数据分区的最小粒度,因此不能将一个大的键值对象映射到不同的节点。如:hash、list。
- 不支持多数据库空间。单机下Redis支持16个数据库,集群模式下只能使用一个数据库空间,即db 0
Redis集群模式
- 安装ruby(大于2.2.2)
- 安装redis
- 集群配置
- 安装gem
- 安装ruby的redis包
- redis-trib.rb构建集群
Redis事务详解
- MULTI、EXEC、DISCARD和WATCH命令是Redis事务功能的基础。Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个重要事项:
- Redis会将一个事务中的所有命令序列化,然后按顺序执行。Redis不可能在一个Redis事务的执行过程中插入执行另一个客户端发出的请求。这样便能保证Redis将这些命令作为一个单独的隔离操作执行
- 在一个Redis事务中,Redis要么执行其中的所有命令,要么什么都不执行。因此,Redis事务能够保证原子性。EXEC命令会触发执行事务中的所有命令
- MULTI 用于标记事务块的开始
- EXEC 在一个事务中执行所有先前放入队列的命令,然后恢复正常的连接状态
- DISCARD 清除所有先前在一个事务中放入队列的命令,然后恢复正常的连接状态
- WATCH 当某个事务需要按条件执行时,就要使用这个命令将给定的键设置为受监控的
- UNWATCH 清除所有先前为一个事务监控的键
Redis持久化机制
- RDB 持久化 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,也是默认的持久化方式
- save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
- save 300 10 #300秒内如超过10个key被修改,则发起快照保存
- save 60 10000
- AOF 持久化 aof是redis的一种记录数据库写操作的持久化方案,他会忠实的记录所有的写操作,并且以redis协议的格式存储在一个.aof文件中,在重启redis的时候,redis可以根据.aof文件的内容来恢复数据集
- appendfsync always //收到写命令就立即写入到磁盘,效率最慢,但是保证完全的持久化
- appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
- appendfsync no //完全依赖os 性能最好 持久化没保证
redis实战
- 整合Springboot (单机版 、哨兵模式 、cluster )
- 消息队列
- session共享