1.什么是Redis?
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。在框架之中处于管理DAO层的地位。
2.既然Redis是个存储系统,它的空间是有限的,遇到大于存储内存的数据怎么存储呢?
淘汰策略的存在,能够淘汰掉过期和不经常用的数据,保证缓存中的数据都是最新的。
3.怎么保证数据的存在不丢失呢?
redis的持久化机制
RDB 快照持久化
新开一个子进程进行持久化
save 900 1 900秒内至少有一次变更进行持久化工作
缺点:最后一次快照之后,新快照生成之前的数据有可能丢失
可以手动发送命令save 和bgsave 进行持久化
bgsave 持久化的同时其他客户端还可以进行访问
save 持久化的时候,其他客户端无法访问,持久化速度更快
AOF 持久化
可以做到最多丢失1s的数据
只追加文件,会把写命令写到文件中
apenddsync always 总是同步,这种方式数据安全性更高,但是几乎不用
缺点:频繁的写入数据,造成磁盘写入放大的问题,磁盘寿命减少
apendfsync everysec 每秒持久化一次,有可能丢失一秒的数据,用最多
apendfsync no 由操作系统决定寿命时候去持久化这个不用
AOF持久化有可能造成庞大的持久化文件, 重写AOF文件——把冗余的命令去除
——文件太大的问题的改善,若文件还是很大,恢复数据时比较慢
持久化应用在设置过期时间这些场景中