redis常用命令

redis常用命令

redis常用命令

一、启动停止服务

#####停止

redis-cli SHUTDOWN

#####开始

redis-cli
redis-server # 默认启动 可以使用 --port 端口号 来指定端口
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start

#加上`&`号使redis以后台程序方式运行

# redis-server &
# redis-server /data/conf/redis.conf
# redis-server /data/conf/redis_63920.conf &
# redis-server /etc/redis/6379.conf &

远程链接:

# redis-cli -h 127.0.0.1 -p 6379

远程服务停止:

# redis-cli -h 127.0.0.1 -p 63920 shutdown
# redis-cli -h 192.168.1.3 -p 6379 shutdown

设置密码之后关闭:

# redis-cli -h 127.0.0.1 -p 6379 -a 123456 shutdown
# redis-cli -h 192.168.1.3 -p 6379 -a 123456 shutdown


二、配置远程链接:

注释掉bind 127.0.0.1可以使所有的ip访问redis
"protected-mode yes"改为 "protected-mode no"

来源:http://www.cnblogs.com/liusxg/p/5712493.html

三、配置日志:

loglevel notice	#日志等级  
logfile "/usr/redis/log/redis.log"	#日志保存路径

四、配置redis密码:

# vi /etc/redis/6379.conf
找到# requirepass foobared 去掉前面的注释#,并把foobared 替换为你自己的密码:123456(生产环境密码要严谨)


四、防火墙设置

# iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT #允许6379端口
# service iptables save  #保存iptables规则
坑:
192.168.1.3可以远程链接192.168.1.4的redis
192.168.1.4不能远程链接192.168.1.3的redis
起初以为是192.168.1.3的网络问题,但是在192.168.1.3执行防火墙设置之后,4可以连3,防火墙要允许,即使关掉也不行。。。

五、常用命令

redis 127.0.0.1:6379> info  #查看server版本内存使用连接等信息
redis 127.0.0.1:6379> client list  #获取客户连接列表
redis 127.0.0.1:6379> client kill 127.0.0.1:33441 #终止某个客户端连接
redis 127.0.0.1:6379> dbsize #当前保存key的数量
redis 127.0.0.1:6379> save #立即保存数据到硬盘
redis 127.0.0.1:6379> bgsave #异步保存数据到硬盘
redis 127.0.0.1:6379> flushdb #当前库中移除所有key
redis 127.0.0.1:6379> flushall #移除所有key从所有库中
redis 127.0.0.1:6379> lastsave #获取上次成功保存到硬盘的unix时间戳
redis 127.0.0.1:6379> monitor #实时监测服务器接收到的请求
redis 127.0.0.1:6379> slowlog len #查询慢查询日志条数
(integer) 3 
redis 127.0.0.1:6379> slowlog get #返回所有的慢查询日志,最大值取决于slowlog-max-len配置
redis 127.0.0.1:6379> slowlog get 2 #打印两条慢查询日志
redis 127.0.0.1:6379> slowlog reset #清空慢查询日志信息

redis 127.0.0.1:6379> config get * #使用 * 获取所有配置项
redis 127.0.0.1:6379> config set loglevel 'notice' #更改配置

#####Redis客户端管理软件

http://database.51cto.com/art/201505/477692.htm

推荐使用Redis Desktop Manager下载地址:

https://redisdesktop.com/download

#####redis.conf 配置项说明如下:

参考:

https://my.oschina.net/wfire/blog/301147

http://blog.csdn.net/zhutulang/article/details/51969760

1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
    daemonize no
2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
    pidfile /var/run/redis.pid
3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字
    port 6379
4. 绑定的主机地址
    bind 127.0.0.1
5.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
    timeout 300
6. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
    loglevel verbose
7. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null
    logfile stdout
8. 设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
    databases 16
9. 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
    save <seconds> <changes>
    Redis默认配置文件中提供了三个条件:
    save 900 1
    save 300 10
    save 60 10000
    分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
 
10. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
    rdbcompression yes
11. 指定本地数据库文件名,默认值为dump.rdb
    dbfilename dump.rdb
12. 指定本地数据库存放目录
    dir ./
13. 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
    slaveof <masterip> <masterport>
14. 当master服务设置了密码保护时,slav服务连接master的密码
    masterauth <master-password>
15. 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
    requirepass foobared
16. 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
    maxclients 128
17. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区
    maxmemory <bytes>
18. 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
    appendonly no
19. 指定更新日志文件名,默认为appendonly.aof
     appendfilename appendonly.aof
20. 指定更新日志条件,共有3个可选值: 
    no:表示等操作系统进行数据缓存同步到磁盘(快) 
    always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全) 
    everysec:表示每秒同步一次(折衷,默认值)
    appendfsync everysec
 
21. 指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制)
     vm-enabled no
22. 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
     vm-swap-file /tmp/redis.swap
23. 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0
     vm-max-memory 0
24. Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来设定的,作者建议如果存储很多小对象,page大小最好设置为32或者64bytes;如果存储很大大对象,则可以使用更大的page,如果不 确定,就使用默认值
     vm-page-size 32
25. 设置swap文件中的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。
     vm-pages 134217728
26. 设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟。默认值为4
     vm-max-threads 4
27. 设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启
    glueoutputbuf yes
28. 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
    hash-max-zipmap-entries 64
    hash-max-zipmap-value 512
29. 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)
    activerehashing yes
30. 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
    include /path/to/local.conf

redis配置文件中文说明

#绑定的主机地址,默认:bind 127.0.0.1
bind 0.0.0.0
#端口
port 6379
# TCP 监听的最大容纳数量
# 在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。
# Linux 内核会一声不响的把这个值缩小成 /proc/sys/net/core/somaxconn 对应的值,
# 所以你要修改这两个值才能达到你的预期。
tcp-backlog 511
# 指定在一个 client 空闲多少秒之后关闭连接(0 就是不管它)
timeout 20
# tcp 心跳包。
# 如果设置为非零,则在与客户端缺乏通讯的时候使用 SO_KEEPALIVE 发送 tcp acks 给客户端。
# 这个之所有有用,主要由两个原因:
# 1) 防止死的 peers
# 2) Take the connection alive from the point of view of network
#    equipment in the middle.
# 推荐一个合理的值就是60秒
tcp-keepalive 60
# 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。
# 当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
daemonize yes
#可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的。
supervised no
#当redis以守护模式启动时指定pid
pidfile /var/run/redis_6379.pid
#loglevel日志级别
#debug-->记录大量日志信息,适用于开发、测试阶段
#verbose-->较多日志信息
#notice-->适量日志信息,使用于生产环境
#warning-->仅有部分重要、关键信息才会被记录
loglevel notice
#日志文件的位置 
logfile "/data/wwwroot/log/redis_6379.log"
#设置数据库的数目
databases 16
#保存数据到磁盘。格式是:save <seconds> <changes> ,含义是在 seconds 秒之后至少有 changes个keys 发生改变则保存一次。
save 900 1
save 300 10
save 60 10000
#默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘, 否则就会没人注意到灾难的发生。 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。
stop-writes-on-bgsave-error yes
#是否在dump  .rdb数据库的时候压缩字符串,默认设置为yes。如果你想节约一些cpu资源的话,可以把它设置为no,这样的话数据集就可能会比较大。
rdbcompression yes
#是否CRC64校验rdb文件,会有一定的性能损失(大概10%)。
rdbchecksum yes
#rdb文件
dbfilename dump.rdb
#数据库存放目录。必须是一个目录,aof文件也会保存到该目录下。
dir /data/redis/6379
#设置本机为slave服务。格式:slaveof <masterip> <masterport>。设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
# slaveof  192.168.1.3  6379
# slaveof <masterip> <masterport>
#当master服务设置了密码保护时,slav服务连接master的密码。
#masterauth
#当一个slave与master失去联系时,或者复制正在进行的时候,slave应对请求的行为:1) 如果为 yes(默认值) ,slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候;2) 如果为 no ,在你执行除了 info 和 salveof 之外的其他命令时,slave 都将返回一个 "SYNC with master in progress" 的错误。
slave-serve-stale-data yes
#设置slave是否是只读的。从2.6版起,slave默认是只读的。
slave-read-only yes
#主从数据复制是否使用无硬盘复制功能。
repl-diskless-sync no
repl-diskless-sync-delay 5
#指定向slave同步数据时,是否禁用socket的NO_DELAY选 项。若配置为“yes”,则禁用NO_DELAY,则TCP协议栈会合并小包统一发送,这样可以减少主从节点间的包数量并节省带宽,但会增加数据同步到 slave的时间。若配置为“no”,表明启用NO_DELAY,则TCP协议栈不会延迟小包的发送时机,这样数据同步的延时会减少,但需要更大的带宽。 通常情况下,应该配置为no以降低同步延时,但在主从节点间网络负载已经很高的情况下,可以配置为yes。
repl-disable-tcp-nodelay yes
#当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,这个值越小,就越会被优先选中,但是如果是 0 , 那是意味着这个 slave 不可能被选中。 默认优先级为 100。
slave-priority 100
#设置redis连接密码。
requirepass 123456
#是否启用aof持久化方式 。即是否在每次更新操作后进行日志记录,默认配置是no,即在采用异步方式把数据写入到磁盘,如果不开启,可能会在断电时导致部分数据丢失。
appendonly no
#更新日志文件名,默认值为appendonly.aof 。
appendfilename "appendonly.aof"
#aof文件刷新的频率。有三种:
#no 依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差。
#always 每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全。
#everysec 每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据。
appendfsync everysec
#指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。Redis在后台写RDB文件或重写AOF文件期间会存在大量磁盘IO,此时,在某些linux系统中,调用fsync可能会阻塞。
no-appendfsync-on-rewrite no
#当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。当AOF文件大小的增长率大于该配置项时自动开启重写。
auto-aof-rewrite-percentage 100
#当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。当AOF文件大小大于该配置项时自动开启重写。
auto-aof-rewrite-min-size 64mb
#redis在启动时可以加载被截断的AOF文件,而不需要先执行 redis-check-aof 工具。
aof-load-truncated yes
#一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000。
lua-time-limit 5000
#设定执行时间,单位是毫秒,执行时长超过该时间的命令将会被记入log。-1表示不记录slow log; 0强制记录所有命令
slowlog-log-slower-than 10000
#slow log的长度。最小值为0。如果日志队列已超出最大长度,则最早的记录会被从队列中清除。 
slowlog-max-len 128
#服务端内部的延迟监控,设置一个合理的阈值,如设置100ms
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

未经允许不得转载:好玩吧 » redis常用命令