您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > redis常用命令常见错误配置技巧等分享
redis常用命令、常见错误、配置技巧等分享1.redis查看当前所有的key复制代码代码如下:KEYS*2.查看当前redis的配置信息复制代码代码如下:CONFIGGET*3.MISCONFRedisisconfiguredtosaveRDBsnapshots,butiscurrentlynotabletopersistondisk.Commandsthatmaymodifythedatasetaredisabled.PleasecheckRedislogsfordetailsabouttheerror.强制停止redis快照导致,redis运行用户没有权限写rdb文件或者磁盘空间满了,解决办法:复制代码代码如下:configsetstop-writes-on-bgsave-errorno例如:复制代码代码如下:set'name''shenhui'-MISCONFRedisisconfiguredtosaveRDBsnapshots,butiscurrentlynotabletopersistondisk.Commandsthatmaymodifythedatasetaredisabled.PleasecheckRedislogsfordetailsabouttheerror.configsetstop-writes-on-bgsave-errorno+OKset'name''shenhui'+OK4.redis127.0.0.1:6379CONFIGSETlogfile/var/log/redis/redis-server.log(error)ERRUnsupportedCONFIGparameter:logfilelogfile不能通过set动态设置5.(error)OOMcommandnotallowedwhenusedmemory设置了maxmemory的选项,redis内存使用达到上限。可以通过设置LRU算法来删除部分key,释放空间。默认是按照过期时间的,如果set时候没有加上过期时间就会导致数据写满maxmemory。如果不设置maxmemory或者设置为064位系统不限制内存,32位系统最多使用3GB内存。volatile-lru-根据LRU算法生成的过期时间来删除。allkeys-lru-根据LRU算法删除任何key。volatile-random-根据过期设置来随机删除key。allkeys-random-无差别随机删。volatile-ttl-根据最近过期时间来删除(辅以TTL)noeviction-谁也不删,直接在写操作时返回错误。6.reids日志位置logfile日志记录方式,默认值为stdout,如果设置为stdout且以守护进程方式运行,那么日志会被重定向到/dev/null,也就是不记日志。7.reids配置参数详解复制代码代码如下:#daemonizeno默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yesdaemonizeyes#当redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。#当运行多个redis服务时,需要指定不同的pid文件和端口pidfile/var/run/redis_6379.pid#指定redis运行的端口,默认是6379port6379#在高并发的环境中,为避免慢客户端的连接问题,需要设置一个高速后台日志tcp-backlog511#指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求#bind192.168.1.10010.0.0.1#bind127.0.0.1#设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接#0是关闭此设置timeout0#TCPkeepalive#在Linux上,指定值(秒)用于发送ACKs的时间。注意关闭连接需要双倍的时间。默认为0。tcp-keepalive0#指定日志记录级别,生产环境推荐notice#Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose#debug记录很多信息,用于开发和测试#varbose有用的信息,不像debug会记录那么多#notice普通的verbose,常用于生产环境#warning只有非常重要或者严重的信息会记录到日志loglevelnotice#配置log文件地址#默认值为stdout,标准输出,若后台模式会输出到/dev/null。logfile/var/log/redis/redis.log#可用数据库数#默认值为16,默认数据库为0,数据库范围在0-(database-1)之间databases16################################快照##################################保存数据到磁盘,格式如下:#save#指出在多长时间内,有多少次更新操作,就将数据同步到数据文件rdb。#相当于条件触发抓取快照,这个可以多个条件配合#比如默认配置文件中的设置,就设置了三个条件#save9001900秒内至少有1个key被改变#save30010300秒内至少有300个key被改变#save601000060秒内至少有10000个key被改变#save9001#save30010#save6010000#后台存储错误停止写。stop-writes-on-bgsave-erroryes#存储至本地数据库时(持久化到rdb文件)是否压缩数据,默认为yesrdbcompressionyes#RDB文件的是否直接偶像chcksumrdbchecksumyes#本地持久化数据库文件名,默认值为dump.rdbdbfilenamedump.rdb#工作目录#数据库镜像备份的文件放置的路径。#这里的路径跟文件名要分开配置是因为redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成,#再把该该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。#AOF文件也会存放在这个目录下面#注意这里必须制定一个目录而不是文件dir/var/lib/redis-server/#################################复制##################################主从复制.设置该数据库为其他数据库的从数据库.#设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步#slaveof#当master服务设置了密码保护时(用requirepass制定的密码)#slave服务连接master的密码#masterauth#当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:#1)如果slave-serve-stale-data设置为yes(默认设置),从库会继续响应客户端的请求#2)如果slave-serve-stale-data是指为no,出去INFO和SLAVOF命令之外的任何请求都会返回一个#错误SYNCwithmasterinprogressslave-serve-stale-datayes#配置slave实例是否接受写。写slave对存储短暂数据(在同master数据同步后可以很容易地被删除)是有用的,但未配置的情况下,客户端写可能会发送问题。#从Redis2.6后,默认slave为read-onlyslaveread-onlyyes#从库会按照一个时间间隔向主库发送PINGs.可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒#repl-ping-slave-period10#repl-timeout设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒#一定要确保repl-timeout大于repl-ping-slave-period#repl-timeout60#在slavesocket的SYNC后禁用TCP_NODELAY#如果选择“yes”,Redis将使用一个较小的数字TCP数据包和更少的带宽将数据发送到slave,但是这可能导致数据发送到slave端会有延迟,如果是Linuxkernel的默认配置,会达到40毫秒.#如果选择no,则发送数据到slave端的延迟会降低,但将使用更多的带宽用于复制.repl-disable-tcp-nodelayno#设置复制的后台日志大小。#复制的后台日志越大,slave断开连接及后来可能执行部分复制花的时间就越长。#后台日志在至少有一个slave连接时,仅仅分配一次。#repl-backlog-size1mb#在master不再连接slave后,后台日志将被释放。下面的配置定义从最后一个slave断开连接后需要释放的时间(秒)。#0意味着从不释放后台日志#repl-backlog-ttl3600#如果master不能再正常工作,那么会在多个slave中,选择优先值最小的一个slave提升为master,优先值为0表示不能提升为master。slave-priority100#如果少于N个slave连接,且延迟时间=M秒,则master可配置停止接受写操作。#例如需要至少3个slave连接,且延迟=10秒的配置:#min-slaves-to-write3#min-slaves-max-lag10#设置0为禁用#默认min-slaves-to-write为0(禁用),min-slaves-max-lag为10##################################安全####################################设置客户端连接后进行任何其他指定前需要使用的密码。#警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解#requirepassfoobared#命令重命名.#在一个共享环境下可以重命名相对危险的命令。比如把CONFIG重名为一个不容易猜测的字符。#举例:#rename-commandCONFIGb840fc02d524045429941cc15f59e41cb7be6c52#如果想删除一个命令,直接把它重命名为一个空字符即可,如下:#rename-commandCONFIG###################################约束####################################设置同一时间最大客户端连接数,默认无限制,#Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,#如果设置maxclients0,表示不作限制。#当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回maxnumberofclientsreached错误信息#maxclients10000#指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会按照清除策略尝试清除已到期的Key#如果Redis依照策略清除后无法提供足够空间,或者策略设置为”noeviction”,则使用更多空间的命令将会报错,例如SET,LPUSH等。但仍然可以进行读取操作#注意:Redis新的vm机制,会把Key存放内存,Value会存放在swap区#该选项对LRU策略很有用。#maxmemory的设置比较适合于把redis当作于类似memcached的缓存来使用,而不适合当做一个真实的DB。#当把Redis当做一个真实的数据库使用的时候,内存使用将是一个很大的开销#maxmemory#当内存达到最大值的时候Redis会选择删除哪些数据?有
本文标题:redis常用命令常见错误配置技巧等分享
链接地址:https://www.777doc.com/doc-2855204 .html