#是否以后台守护进程运行,默认为no, 取值yes, no daemonize no #pid文件存放路径 pidfile /var/run/redis.pid #配置redis端口,默认6379 port 6379 #绑定ip。默认绑定所有本机ip,一般用在服务器多ip下,可以只监听内网服务器ip,保证服务安全 bind 127.0.0.1 #sock文件 unixsocket /tmp/redis.sock #客户端超时时间,单位秒 timeout 300 #log级别,支持四个级别,debug,notice,verbose,warning loglevel verbose #log文件路径 logfile /var/log/redis/redis-server.log #log输出到标准设备,logs不写文件,输出到空设备,/deb/null logfile stdout #保存快照的频率,在多长时间内执行一定数量的写操作时,保存快照的频率,可以设置多个条件。如果都注释掉,则不做内存数据持久化。如果只是把redis只用作cache,不开启持久化功能 #save <seconds> <changes> #save 900 1 #是否使用压缩 rdbcompression #快照数据库名称 dbfilename #数据库存放路径 dir #redis主从 做法 在从上填上主的IP和端口号 主上不用做任何设置 slaveof <masterip> <masterport> #主库服务器口令,如果主服务器未打开requirepass,则不需要此项 masterauth <master-password> #在master服务器挂掉或者同步失败时,从服务器是否继续提供服务 slave-serve-stale-data yes #设置redis服务密码,如果开启,则客户端连接时需要 -a 指定密码,否则操作会提示无权限 requirepass foobared #命令改名,相当于linux alias,可以用改功能屏蔽一些危险命令 rename-command #最大连接数;0 表示不限制 maxclients 200 #最大使用内存(分配的内存),推荐生产环境下做相应调整,我们用的是只用来做高速缓存,限制2G。默认情况下,redis会占用可用的所有内存 maxmemory 1024MB #过期策略,提供六种策略 maxmemory-policy allkeys-lru volatile-lru //删除过期和lru 的key(默认值) allkeys-lru //删除lru算法的key volatile-random //随机删除即将过期key allkeys->random //随机删除 volatile-ttl //删除即将过期的 noeviction //永不过期,返回错误 #是否开启appendonlylog,开启的话每次写操作会记一条log。相当于mysql的binlog;不同的是,每次redis启动都会读此文件构建完整数据。即使删除rdb文件,数据也是安全的 appendonly no #日志文件的名称,默认appendonly.aof appendfilename appendonly.aof #异步写append file 的策略。类似mysql事物log写方式。三种 appendfsync appendfsync always //同步,每次写都要flush到磁盘,安全,速度慢。 appendfsync everysec //每秒写(默认值,推荐值)同mysql appendfsync no //交给操作系统去做flush的动作
设置内存大小和过期策略
转载https://www.jianshu.com/p/134e526a136c
将redis当做使用LRU算法的缓存来使用
LRU是Redis唯一支持的回收方法。
maxmemory配置指令用于配置Redis存储数据时指定限制的内存大小。
如果你想把Redis当做一个缓存来用,所有的key都有过期时间,那么你可以考虑 使用以下设置(假设最大内存使用量为2M):
maxmemory 2mb
maxmemory-policy allkeys-lru
设置maxmemory为0代表没有内存限制。
以上设置并不需要我们的应用使用EXPIRE(或相似的命令)命令去设置每个key的过期时间,因为 只要内存使用量到达2M,Redis就会使用类LRU算法自动删除某些key。
相比使用额外内存空间存储多个键的过期时间,使用缓存设置是一种更加有效利用内存的方式。而且相比每个键固定的 过期时间,使用LRU也是一种更加推荐的方式,因为这样能使应用的热数据(更频繁使用的键) 在内存中停留时间更久。
基本上这么配置下的Redis可以当成memcached使用。
当我们把Redis当成缓存来使用的时候,如果应用程序同时也需要把Redis当成存储系统来使用,那么强烈建议 使用两个Redis实例。一个是缓存,使用上述方法进行配置,另一个是存储,根据应用的持久化需求进行配置,并且 只存储那些不需要被缓存的数据。
回收策略
当maxmemory限制达到的时候Redis会使用的行为由 Redis的maxmemory-policy配置指令来进行配置。
以下的策略是可用的:
noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外)
allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。
volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。
allkeys-random: 回收随机的键使得新添加的数据有空间存放。
volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
volatile-ttl: 回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。