redis配置说明

来源:互联网 发布:明阳智慧能源知乎 编辑:程序博客网 时间:2024/05/18 01:24

redis配置说明

maxmemory

设置 redis 能够使用的最大内存。当内存满了的时候,如果还接收到 set 命令,redis 将先尝试剔除设置过 expire 信息的 key,而不管该 key 的过期时间还没有到达。在删除时,将按照过期时间进行删除,最早将要被过期的 key 将最先被删除。如果带有 expire 信息的 key 都删光了,那么将返回错误。这样,redis 将不再接收写请求,只接收 get 请求。maxmemory 的设置比较适合于把 redis 当作于类似 memcached 的缓存来使用。

appendonly

默认情况下,redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。所以 redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。开启 append only 模式之后,redis 会把所接收到的每一次写操作请求都追加到appendonly.aof 文件中,当 redis 重新启动时,会从该文件恢复出之前的状态。但是这样会造成 appendonly.aof 文件过大,所以 redis 还支持了 BGREWRITEAOF 指令,对appendonly.aof 进行重新整理。所以我认为推荐生产环境下的做法为关闭镜像,开启appendonly.aof,同时可以选择在访问较少的时间每天对 appendonly.aof 进行重写一次。

vm-enabled

是否开启虚拟内存支持。因为 redis 是一个内存数据库,而且当内存满的时候,无法接收新的写请求,所以在 redis 2.0 中,提供了虚拟内存的支持。但是需要注意的是,redis中,所有的 key 都会放在内存中,在内存不够时,只会把 value 值放入交换区。这样保证了虽然使用虚拟内存,但性能基本不受影响,同时,你需要注意的是你要把vm-max-memory 设置到足够来放下你的所有的 key
maxmemory-policy
当内存使用达到设置的最大阀值时,需要选择一种key的回收策略,可在Redis.conf配置文件中修改“maxmemory-policy”属性值。 若是Redis数据集中的key都设置了过期时间,那么“volatile-ttl”策略是比较好的选择。但如果key在达到最大内存限制时没能够迅速过期,或者根本没有设置过期时间。那么设置为“allkeys-lru”值比较合适,它允许Redis从整个数据集中挑选最近最少使用的key进行删除(LRU淘汰算法)。Redis还提供了一些其他淘汰策略,如下:volatile-lru:使用LRU算法从已设置过期时间的数据集合中淘汰数据。volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰。volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰。allkeys-lru:使用LRU算法从所有数据集合中淘汰数据。allkeys-random:从数据集合中任意选择数据淘汰no-enviction:禁止淘汰数据。通过设置maxmemory为系统可用内存的45%95%(取决于持久化策略)和设置“maxmemory-policy”为“volatile-ttl”或“allkeys-lru”(取决于过期设置),可以比较准确的限制Redis最大内存使用率,在绝大多数场景下使用这2种方式可确保Redis不会进行内存交换。倘若你担心由于限制了内存使用率导致丢失数据的话,可以设置noneviction值禁止淘汰数据。
0 0
原创粉丝点击