缓存预热
缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接查询事先被预热的缓存数据,大大减少数据库的查询压力。
缓存雪崩
Redis主机挂了,导致Redis全盘崩溃,比如缓存中有大量数据同时过期。
如何解决呢?
1、监控redis服务器的性能指标。
2、构建多层的缓存机构,在nginx缓存下面做redis缓存,在redis缓存下面在做ehcache缓存。
3、redis缓存集群要实现高可用,可以使用主从 + 哨兵模式,或者Redis Cluster。
4、数据库的性能也要优化,把数据库里面的超时查询和耗时比较高的事务想办法优化。
5、开启Redis持久化机制aof/rdb,能尽快恢复缓存集群。
6、要做好降级措施,如果出现缓存雪崩,要有兜底机制。可以限流、降级,短时间范围内牺牲一些客户体验,限制一部分请求访问,降低应用服务器压力,待业务低速运转后再逐步放开访问。
7、LRU和LFU进行切换,LRU和LFU可以保证删除数据的时候不要去淘汰按照时间淘汰的,要去淘汰按照访问次数的。
8、调整有效期的策略,例如把商品和热点新闻,我们把他们的错峰时间分开,不要让他们一次性全崩,过期时间使用固定时间+随机值的形式,稀释集中到期的key的数量。
9、定期做维护,对即将过期数据做访问量分析,确认是否延时,配合访问量统计,做热点数据的延时。
可以解决什么问题?
存在50亿个电话号码(或者ip、黑名单、url),给10万个电话号码,如何快速准确判断这些号码是否存在?
布隆过滤器是一个很长的二进制数组+一系列随机hash算法映射函数,主要用于判断一个元素是否在集合中。
能高效的插入和查询,占用空间少,返回的结果是不确定性的。一个元素如果判断结果为存在的时候元素不一定存在,但是判断结果为不存在时则一定不存在。 布隆过滤器可以添加元素但是不能删除元素,因为删掉元素会导致误判率增加。误判只会发生在过滤器没有添加过的元素,对于添加过的元素不会发生误判。
1、主要是解决缓存穿透问题
2、黑名单校验
答案是会的。
在Redis集群中,数据是通过哈希槽来分片的。每个槽都有一个编号,从0到16383。当Redis集群中有多个节点时,每个节点负责处理一部分槽。当一个客户端向Redis集群中写入一个键值对时,Redis会根据键名计算出一个哈希值,然后将这个哈希值对16384取模,得到一个槽编号。Redis会根据这个槽编号将键值对分配到相应的节点上。
在Redis集群中,如果两个键名被分配到同一个槽上,它们就会被放到同一个节点上。因此,如果两个键名的哈希值对16384取模的结果相同,它们就会被放到同一个槽中。
shellcd /etc/sysconfig/network-script/
shellvi ifcfg-ens33
shell#添加此行
BOOTPROTO=static
# 修改如下信息
IPADDR=192.168.234.101
NETWORK=192.168.234.2
NETSTAT=255.255.255.0
GATEWAY=192.168.234.2
DNS1=8.8.8.8
DNS2=114.114.114.114
克隆机器重新生成mac信息
HWADDR=00:1C:42:F4:1C:34
shellservice network restart