是什么
<font color="#f15a23"><b>基于内存的key-value结构的NoSQL数据库</b></font>
<b><font color="#f15a23">支持多种数据结构的存储,string(字符串)、list(列表)、set(集合)、hash(哈希)、zset(有序集合)</font></b><br>
<b><font color="#f15a23">支持持久化</font></b>(周期性的把更新的数据存入磁盘或者把修改操作写入追加的记录文件)<br>
<b><font color="#f15a23">所有操作都是原子性的</font></b>(原子性:指事务的不可分割性,一个事务的所有操作要么不间断地全部被执行,要么一个也没有执行)
<b><font color="#f15a23">性能高效,支持每秒十几万此的读/写操作</font></b>
<b><font color="#f15a23">支持集群、分布式、主从同步等配置</font></b>
<b><font color="#f15a23">支持过期时间,支持事务,消息订阅</font></b>
不适合场景
需要事务支持
基于sql的结构化查询存储,处理复杂的关系(用户自定义查询条件的查询)
如何使用
存储结构
子主题
Redis命令
启动命令<br>
$ redis-cli -h host -p port -a password<br>$ redis-cli --raw (避免中文乱码)<br>
Redis 键(key)
Redis 字符串(String)
Redis 哈希(Hash)<br>
Redis 列表(List)
Redis 集合(Set)
Redis 有序集合(sorted set)
Redis的javaAPI操作
<dependency><br> <groupId>redis.clients</groupId><br> <artifactId>jedis</artifactId><br> <version>2.9.0</version><br> </dependency>
Redis的持久化(Redis默认开启RDB快照)
RDB持久化方案
定期保存快照到rbd文件(新快照覆盖旧快照)<br>
配置保存时间:save [seconds] [changes]
手动执行快照
<b><font color="#f15a23">SAVE</font></b> 直接调用 rdbSave ,阻塞 Redis 主进程
<b><font color="#f15a23">BGSAVE</font></b> 由fork 出一个子进程,<font color="#f15a23">子进程负责调用 rdbSave</font>,非阻塞
RDB方案优点
对性能影响最小(异步执行快照)
RDB是一个紧凑压缩的二进制文件,是某个时间点数据快照,<font color="#f15a23"><b>适合备份和灾难恢复</b></font>
Redis加载RDB恢复数据远远快于AOF方式。
RDB方案缺点
RDB方式数据无法做到实时持久化/秒级持久化,可能丢失数据
数据集大,CPU配置低,fork子进程会消耗较长时间,影响Redis对外提供服务的能力。<br>
RDB方案配置
cd /export/servers/redis-3.2.8/<br>vim redis.conf<br>save 300 10<br>save 60 10000<br>save 5 1
AOF持久化方案
将每个请求写入日志文件,Redis重启时,会将AOF文件中的所有操作按顺序执行一遍,保证数据最新<br>
AOF三种fsync同步磁盘配置
appendfsync no
不进行fsync,将flush文件的时机交给OS决定,速度最快
appendfsync always
每写入一条日志就进行一次fsync操作,数据安全性最高,但速度最慢
<b><font color="#f15a23">appendfsync everysec</font></b>
<b>折中的做法,交由后台线程每秒fsync一次</b>
AOF rewrite(aof文件会越来越大,则需要rewirte)
BGREWRITEAOF命令触发
配置自动执行<br>auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb<br>在AOF rewrite时文件大小的基础上增加到100%<b>且文件大小达到64M触发</b><br>
AOF优点
1、AOF可以更好的保护数据不丢失。
2、AOF文件在发生断电等问题时也不会损坏,即使出现了某条日志只写入了一半的情况,也可以使用redis-check-aof工具轻松修复。
3、适合做灾难性的误删除紧急恢复
AOF的缺点
1、AOF文件通常比RDB文件更大
2、性能消耗比RDB高
3、数据恢复速度比RDB慢
Redis的主从复制架构
编辑从节点redis.conf的slaveof masterip 6379
从节点只能读取数据
Redis当中的Sentinel(哨兵)架构(<b><font color="#c41230">Redis高可用解决方案</font></b>)
由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器及下属服务器<br>
被监控的主服务器下线后,自动将该主服务的某个下属服务升级为新的主服务器<br>
旧的其它下属服务器会被复制到新的主服务器下
sentinel.conf文件配置<br>
操作。<br>#修改bind配置,每台机器修改为自己对应的主机名<br><b><font color="#f15a23">bind node01</font></b> <br>#配置sentinel服务后台运行<br><b><font color="#f15a23">daemonize yes</font></b><br>#修改三台机器监控的主节点<br><b><font color="#f15a23">sentinel monitor mymaster node01 6379 2 <br></font><font color="#000000">#mymaster是自定义集群名,2表示需要被大于等于2个sentinel的服务监控到下线才会触发failover操作</font></b><br># sentinel author-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码<br># sentinel auth-pass <master-name> <password>
Redis集群
介绍
Redis 集群是一个提供在多个Redis节点之间共享数据的程序集
特点
缓存永不宕机
Redis可以使用集群所有节点内存
横向扩展增加内存
Redis集群没有中心节点,去中心化,不会因为某个节点成为整个集群的性能瓶颈<br>
异步处理数据,实现快速读写