三,限制部分

1:maxclients:设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。当你

无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自

身内部处理逻辑留一些句柄出来。如果达到了此限制,redis则会拒绝新的连接请求,并且向这

些连接请求方发出max number of clients reached以作回应。

2:maxmemory:设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数

据,移除规则可以通过maxmemory-policy来指定。如果redis无法根据移除规则来移除内存中的

数据,或者设置了不允许移除,那么redis则会针对那些需要申请内存的指令返回错误信

息,比如SET、LPUSH等。但是对于无内存申请的指令,仍然会正常响应,比如GET等。

如果你的redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,需

要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用

考虑这个因素

3:maxmemory-samples:设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,

所以你可以设置样本的大小,redis默认会检查这么多个key并选择其中LRU的那个

4:maxmemory-policy:设置内存移除规则,redis提供了多达6种的移除规则:

(1)volatile-lru:使用LRU算法移除key,只对设置了过期时间的键

(2)allkeys-lru:使用LRU算法移除key

(3)volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键

(4)allkeys-random:移除随机的key

(5)volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key

(6)noeviction:不进行移除。针对写操作,只是返回错误信息

无论使用上述哪一种移除规则,如果没有合适的key可以移除的话,redis都会针对写请求返回错误信息