Redis只作为缓存,不做持久化的配置

Eave 2017.04.10

1、注释掉原来的持久化规则

# save 900 1
# save 300 10
# save 60 10000

设置为空

save ""
# 设置为no
appendonly no

2、配置缓存内存限制和清理策略

作为缓存服务器,如果不加以限制内存的话,就很有可能出现将整台服务器内存都耗光的情况,可以在redis的配置文件里面设置

# 限定最多使用2GB内存
maxmemory 2048MB

如果内存到达了指定的上限,还要往redis里面添加更多的缓存内容,需要设置清理内容的策略

默认为0,没有指定最大缓存,如果有新的数据添加,超过最大内存,则会使redis崩溃,所以一点要设置

设置maxmemory之后,配合的要设置缓存数据回收策略

# 设置策略为清理最少使用的key对应的数据
maxmemory-policy allkeys-lru

下面是Redis官网上的几种清理策略:

noevictio:当达到内存限制,并且客户端尝试执行可能导致更多内存使用的命令时(大多数写命令,但DEL和一些其他命令除外),直接返回错误。

allkeys-lru:尝试优先淘汰最近最少使用(LRU)的键,以便为新添加的数据腾出空间。该策略作用于所有键

volatile-lru:尝试优先淘汰最近最少使用(LRU)的键,但仅限于设置了过期时间的键,以便为新添加的数据腾出空间。

allkeys-random:随机淘汰键,以便为新添加的数据腾出空间。该策略作用于所有键

volatile-random:随机淘汰键,以便为新添加的数据腾出空间,但仅限于淘汰设置了过期时间的键。

volatile-ttl:为了给新数据腾出空间,仅淘汰设置了过期时间的键,并优先淘汰生存时间(TTL)较短的键。

Redis回收算法,实际不是严谨的LRU算法,而是抽样回收数据,这样算是为了减少消耗内存使用,但是抽样回收的缓存和全部数据回收缓存差异非常小,或者根本就没有

先预测好系统所需要的内存高峰,部署相对应内存的缓存服务器

设置maxmemory和相对应的回收策略算法,设置最好为物理内存的3/4,或者比例更小,因为redis复制数据等其他服务时,也是需要缓存的

以防缓存数据过大致使redis崩溃,造成系统出错不可用。牺牲一部分缓存数据,保存整体系统可用性

如果数据是 幂律分布 也就是某些数据访问频率比较高 则适合allkeys-lru

如果数据是 平等分布 也就是访问频率比较平均 则适合allkeys-random

淘汰策略的样本大小

maxmemory-samples 5

默认值5,上面LRU和最小TTL策略并非严谨的策略,而是大约估算的方式,因此可以选择取样值以便检查

3、我的需求是只把redis当作缓存来用,所以持久化到硬盘对我的需求来说没有意义。配置 save ""

4、增加ip绑定(可选)

bind 127.0.0.1

指定Redis 只接收来自于该IP 地址的请求,如果不进行设置,那么将处理所有请求,系统默认是注释掉的,不开启。在生产环境中为了安全最好设置该项

5、限制同时连接的客户数量

maxclients 10000

限制同时连接的客户数量。当连接数超过这个值时,redis 将不再接收其他连接请求,客户端尝试连接时将收到error 信息。默认为10000,要考虑系统文件描述符限制,不宜过大,浪费文件描述符,具体多少根据具体情况而定

6、当一个redis支撑不了的时候再考虑Master-Slave模式