一:缓存机制的介绍

缓存机制主要的目的就是为了降低用户访问物理设备的频次。从缓存服务器中直接获取数据,快速的响应给用户,提高整体的查询速度,使用户体验更好。
说明:为了提高数据库"查询"能力.引入缓存服务器。

  1. 缓存机制采用K-V样式的数据结构进行构建,k必须唯一;
  2. 缓存的运行环境是内存;
  3. 内存断电即擦除,为了保证数据的安全,实现持久化(写入磁盘)操作;
  4. 应该使用C语言进行开发;
  5. 内存中的数据(不能一直存? ) 所以就会使用内存优化的算法,例:LRU算法 ;

说明:由于redis中一般使用String数据类型保存业务数据.但是代码中java对象Redis没办法直接保存,所以需要中间的转化的过程.使用JSON方式进行数据中转.

二:redis常出现的三种现象

1.缓存穿透

特点: 用户高并发环境下,访问数据库中根本不存在的数据.

影响:由于用户高并发访问,则数据库可能存在宕机的风险.

redis分布式存储 哈希 redis分布式存储原理_缓存


2.缓存击穿

由于用户高并发的访问. 访问的数据刚开始有缓存,但是由于特殊原有 导致缓存失效.(数据’‘单个’’)

redis分布式存储 哈希 redis分布式存储原理_缓存_02


3.缓存雪崩

由于高并发的环境下.大量的用户访问服务器. redis中有大量的数据在同一时间超时(删除).

解决方案:不要同一时间删除数据.

redis分布式存储 哈希 redis分布式存储原理_持久化_03

三:redis的持久化策略

由于Redis中的数据都保存在内存中.如果服务关闭或者宕机则内存资源直接丢失.导致缓存失效.Redis启动时根据配置文件中指定的持久化方式进行持久化操作. Redis中默认的持久化的方式为RDB模式.
(1)什么是RDB模式
特点说明:
1.RDB模式采用定期持久化的方式. 风险:可能丢失数据.
2.RDB模式记录的是当前Redis的内存记录快照. 只记录当前状态. 持久化效率最高的
3.RDB模式是默认的持久化方式.
持久化命令:
命令1: save 同步操作. 要求记录马上持久化. 可能对现有的操作造成阻塞
命令2: bgsave 异步操作. 开启单独的线程实现持久化任务.
持久化周期:
save 900 1 在900秒内,如果执行一次更新操作,则持久化一次.
save 300 10 在300秒内,如果执行10次更新操作,则持久化一次.
save 60 10000 在60秒内,如果执行10000次更新操作,则持久化一次.
save 1 1 ???不可以 容易阻塞 性能太低.不建议使用.
用户操作越频繁,则持久化周期越短.
(2)redis的第二种持久化策略AOF模式
特点:
1.AOF模式默认是关闭状态 如果需要则手动开启.
2.AOF能够记录程序的执行过程 可以实现数据的实时持久化. AOF文件占用的空间较大.回复数据的速度较慢.
3.AOF模式开启之后.RDB模式将不生效.
持久化周期配置:
appendfsync always 实时持久化.
appendfsync everysec 每秒持久化一次 略低于rdb模式
appendfsync no 自己不主动持久化(被动:由操作系统解决)

四:redis缓存优化算法

  1. LRU算法 《最近最少使用》
  2. LFU算法 《最不经常使用页置换算法》
  3. RANDOM算法 《随机算法》