redis基本认识
redis安装后,在src和/usr/local/bin下有几个以redis开头的可执行文件,称为redis shell,这些基本可执行文件列表作用如下:
可执行文件 | 作用 |
redis-server | 启动redis |
redis-cli | redis命令行工具 |
redis-benchmark | 基准测试工具 |
redis-check-aof | AOF持久化文件检测工具和修复工具 |
redis-check-dump | RDB持久化文件检测工具和修复工具 |
redis-sentinel | 启动redis-sentinel |
推荐教程
入门:一篇文章入门 redis(万字长文干货) (qq.com)
八股:图解Redis介绍 | 小林coding (xiaolincoding.com)
redis安装
安装直接参考官方文档,保新也保质,看了一下linux的,没有centos的直接安装方式,一般就直接用源码安装,参考菜鸟教程即可。因为使用c写的,安装个gcc编译就好。或者我尝试了一下yum直接安装。也可以一步到位,就是版本肯定不高。配置文件在/etc里有一个,用这个配置文件启动也是ok的。
Install Redis on Linux | Redis
redis-server
启动
redis-server是启动redis的基本操作,可以在命令行中指定redis的conf文件,或者不填写使用默认配置文件,当然启动后需要的话可以加&使他后台运行。还可以使用脚本启动redis,更加的定制化,具体百度。
# 如果是用apt-get或者yum install安装的redis,
#可以直接通过下面的命令停止/启动/重启redis,
#具体系统可能有差别,百度一下。反正就是要找到这个redis-server然后执行它。
/etc/init.d/redis-server start
# 如果是源码安装,去src里面找
./redis-server xxx.conf &
停止
如果是通过源码安装的redis,则可以通过redis的客户端程序redis-cli
的shutdown
命令来停止
如果是apt之类的安装的也可以去//etc/init.d/里面找找。
# 停止服务
redis-cli -h 127.0.0.1 -p 6379 shutdown
# 继续使用server重启
redis-server xxx.conf
#或是apt安装的使用如下方式
/etc/init.d/redis-server restart
/etc/init.d/redis-server stop
如果上述方式都没有成功停止redis,则可以使用
kill -9 pid号
redis-cli
因为redis一般都没有配环境变量,需要去你安装的src目录中运行redis-cli进行操作,以下的各种操作都可以进入cli后,在其中操作,也可以用命令式操作一步到位并且获得他的标准输出进行各种操作。常用参数就下面三个,有需要再去查。
交互式操作
#进入src目录后,或绝对路径也可
./redis-cli -h ip地址 -a 密码 -p 端口
ip:port>ping
命令式操作
#进入src目录后,或绝对路径也可
./redis-cli -h ip地址 -a 密码 -p 端口 命令(例如ping)
基本操作
参考官方文档或参考的第1个链接,都挺全的,现在暂且记录使用过的。
127.0.0.1:6379> SET mykey "Hello\nWorld"
OK
127.0.0.1:6379> GET mykey
Hello
World
info
使用info可以查询很多redis相关信息,具体分为如下不同方面:服务器信息,客户端信息,内存信息,持久化信息(就是内存到数据库或硬盘),复制信息,统计信息。
# 会输出全量info,如果需要具体的字段就在后面加就可以了
>info
>info server
>info stats
# Stats
total_connections_received:10080171
total_commands_processed:3971062339
instantaneous_ops_per_sec:2606
total_net_input_bytes:302752087700
total_net_output_bytes:271957465208
instantaneous_input_kbps:172.05
instantaneous_output_kbps:75.37
rejected_connections:0
sync_full:2
sync_partial_ok:0
sync_partial_err:2
expired_keys:783527
expired_stale_perc:0.18
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:260163
evicted_keys:0
keyspace_hits:788445337
keyspace_misses:13611475
pubsub_channels:0
pubsub_patterns:1
latest_fork_usec:29414
…………
slowlog
slowlog为慢查询,慢查询指的是命令执行时长比较长的查询。需要注意的是,slowlog是存储在内存中的,一般慢日志不为多比较好,并且可以通过shell进行持久化。
字段解析
slowlog-log-slower-than
的作用是指定命令执行时长的阈值,执行命令的时长超过这个阈值时就会被记录下来。它的单位是微秒(1秒 = 1000毫秒 = 1000000微秒),默认是10000微秒。如果把slowlog-log-slower-than设置为0,将会记录所有命令到日志中。如果把slowlog-log-slower-than设置小于0,将会不记录任何命令到日志中。如果把slowlog-log-slower-than设置为0,将会记录所有命令到日志中。
在实际的生产环境中,需要根据Redis并发量来调整该配置。因为Redis采用单线程响应命令,如果命令执行时间在1000微秒以上,那么Redis最多可支撑OPS不到1000,所以对于高并发场景的Redis建议设置为1000微秒。
slowlog-max-len
slowlog-max-len的作用是指定慢查询日志最多存储的条数。实际上,Redis使用了一个列表存放慢查询日志,slowlog-max-len就是这个列表的最大长度。当一个新的命令满足满足慢查询条件时,被插入这个列表中。当慢查询日志列表已经达到最大长度时,最早插入的那条命令将被从列表中移出。比如,slowlog-max-len被设置为10,当有第11条命令插入时,在列表中的第1条命令先被移出,然后再把第11条命令放入列表。
记录慢查询是Redis会对长命令进行截断,不会大量占用大量内存。在实际的生产环境中,为了减缓慢查询被移出的可能和更方便地定位慢查询,建议将慢查询日志的长度调整的大一些。比如可以设置为1000以上。
具体操作
--------------------------------------------------------
#### slowlog具体数据查询
#查询slowlog表长度
slowlog len
#查询slowlog日志,get后可以加条数,就print出来响应的条数,不加即为5
slowlog get
--------------------------------------------------------
#### slowlog的设置(slowlog只有这两个参数)
# 如果想查询 只需要将set改成get,并且不添加参数
# 命令执行耗时超过 5 毫秒,记录慢日志
CONFIG SET slowlog-log-slower-than 5000
# 只保留最近 500 条慢日志
CONFIG SET slowlog-max-len 500
--------------------------------------------------------
#### 重置
# 将配置持久化到配置文件中
config rewrite
# 重置slowlog
slowlog reset
slowlog get的输出结果解析:
131) 1) (integer) 11211 #唯一标识
2) (integer) 1695010579 #时间戳
3) (integer) 10896 #执行时长
4) 1) "EVAL" # 使用的命令和参数
2) "if (redis.call('hexists', KEYS[1], ARGV[2]) == 1) then redis.call('pexpire', KEYS[1], ARGV[1]); return 1; end; return 0;"
3) "1"
4)
5)
6)
5) "192.168.0.1:2541"
6) ""
reference:
redis cli命令 - milkty - 博客园 (cnblogs.com)