redis 集群支持高可用性能,当一个集群的主机挂掉,其他从机输入命令
SLAVE OF NO ONE
就可以继续完成相应的任务,但是这样子也不好,因为每次重启都要自己输入命令,这样子不符合软件设计思想,那有没有一个程序代替人来完成自动监控呢?这就是Redis的哨兵机制(redis-sentinel)
哨兵是一个监听程序,他会监听redis服务器,并且在主机挂掉之后,根据一个投票算法选出新的主机模式。
哨兵模式的配置文件:
daemonize yes pidfile "/app/redis/run/redis-sentinel.pid" logfile "/app/redis/log/sentinel.log" sentinel monitor redis 1217.0.0.1 6379 1
主机的配置文件
protected-mode no port 6379 daemonize no pidfile "/app/redis/run/redis_6379.pid" logfile "/app/redis/log/redis.log" dbfilename "dump.rdb" dir "/app/redis/dat" appendonly yes appendfilename "appendonly.aof" aof-use-rdb-preamble yes
从机的配置文件:
protected-mode no port 6379 daemonize no pidfile "/app/redis/run/redis_6379.pid" logfile "/app/redis/log/redis.log" dbfilename "dump.rdb" dir "/app/redis/dat" appendonly yes appendfilename "appendonly.aof" aof-use-rdb-preamble yes replicaof 127.0.0.1 6379缓存击穿 什么是缓存击穿
缓存击穿指的是服务起在某一阶段上疯狂的返回某一热点事件的返回包。比方说某一个热点时间过期了,突然又爆发了,直接把dao层数据库打垮了。
缓存击穿怎么怎么办 互斥锁加锁的目的实际上是造成一种循序访问数据库的作用,以时效换稳定,这也是所谓的天下没有免费的午餐的思想,要想得到什么,则需要放弃一些什么
设置热点永不过期顾名思义,既然有些热点过期了,导致很多访问打到数据库来了, 那么就设置,数据库不会过期不就行了,
缓存穿透 什么是缓存穿透大量的访问不是热点的数据库,redis拦不到,就把大量的访问打到Mysql那里去了
缓存穿透怎么办- 使用布隆过滤器。用hashmap存访问值,算出其是不是有一定概率的存在
- 接口校验,看看接口是不是合理,是否存在人物人为验证。
- 空白值,当没有访问到数据的时候,就需要把访问灌进内存,用来对付接下来的访问。
大量的热点数据同时失效,一下子会导致底层数据库压力增大、
缓存雪崩怎么办- 加锁,不让大量的请求打到数据库‘
- 缓慢过期,不要一次性过期太多内容
- 永不过期



