如何保证redis中的数据都是热点数据

MySQL里有1000w数据,redis中只存10w的数据,如何保证redis中的数据都是热点数据

Redis淘汰策略

redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:


voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰


volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰


volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰


allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰


allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰


no-enviction(驱逐):禁止驱逐数据


 


Redis的回收策略


· volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰


· volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰


· volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰


· allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰


· allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰


no-enviction(驱逐):禁止驱逐数据


 


Redis常见性能问题和解决方案


(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件


(2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置在同一个局域网内


(4) 尽量避免在压力很大的主库上增加从库


(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3...


这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。