定义:Redis是一种基于内存的高速的key-value数据库
一、Redis的特点
1.基于内存的,速度非常快
2.支持多种数据结构,String,List等
3.可以进行数据持久化,把数据保存到本地
4.单个value最大可达1G
5.主要缺点就是收到内存的限制,不能用作海量数据的读写
6.支持事务,操作都是原子性的
二、持久化的两种方式
1.内存快照
这种方式是把整个数据库的数据定时保存下来,因为每次的数据量都很大,所以频率不能太高,这就会导致如果数据库出现异常,这种方式恢复的数据并不是完全一致的,距上次快照中间的数据会丢失
2.AOF
这种方式是增量的存储每次修改数据库的操作,所以可以做到频率很高,而且每次占用的时间比较短,回复数据的时候数据也不会丢失,缺点是文件会很大,导致我们如果回复数据的时间会很长
我们一般常用的方式是两种都使用
三、主从的设计模式
Redis分为master和slave两部分
Master用于存储写入的数据,同时将这些数据同步到Slave上,为了提升同步的速度和稳定性,Master和Slave最好放到同一个局域网里
Slave用于检索数据,Slave可以有多个,这样会提升读的性能
读写分离的缺点是两边都要保存完整的数据,如果数据量大,集群的扩展能力还会受限于单个节点的存储能力
不要对Master进行数据持久化,因为持久化会占用资源,此时是不能进行写入的,会出现明显的性能问题
四、Redis的回收策略
1.volatile-lru:从已设置过去日期的数据中回收最近最少使用的数据;
2.volatile-ttl:从已设置过期日期的数据中回收即将过期的数据;
3.volatile-random:从已设置过期日期的数据中随机回收;
4.allkeys-lru:从所有数据中回收最近最少使用的数据;
5.allkeys-rando:从所有数据中随机回收;
6.no-enviction:不回收