1)连接操作命令
2)持久化
3)远程服务控制
4)对value操作的命令
5)String
6)List
7)Set
8)Hash
常用命令:
1) 查看keys个数
keys * // 查看所有keys
keys prefix_* // 查看前缀为"prefix_"的所有keys
2) 清空数据库
flushdb // 清除当前数据库的所有keys
flushall // 清除所有数据库的所有keys
Redis常用命令
Redis常用命令(示例)
redis高级应用
Jedis接口分类说明
Redis新手入门详解(百度文库)
Redis中文入门手册(百度文库)
Redis 设计与实现(推荐)
Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能。
redis的基准信息和性能检测。
redis-benchmark-h localhost -p 6379 -c 100 -n 100000
100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能
./redis-benchmark -n 100000 –c 50
====== –c 50 ======
100000 requests completed in 1.93 seconds (100000个请求完成于 1.93 秒 )
50 parallel clients (每个请求有50个并发客户端)
3 bytes payload (每次写入3字节)
keep alive: 1 (保持1个连接)
58.50% <= 0 milliseconds
99.17% <= 1 milliseconds
99.58% <= 2 milliseconds
99.85% <= 3 milliseconds
99.90% <= 6 milliseconds
100.00% <= 9 milliseconds
(所有请求在62毫秒内完成)
114293.71 requests per second(每秒 114293.71 次查询)
redis-benchmark参数 |
|
-h |
设置检测主机IP地址,默认为127.0.0.1 |
-p |
设置检测主机的端口号,默认为6379 |
-s |
服务器套接字(压倒主机和端口) |
-c |
并发连接数 |
-n |
请求数 |
-d |
测试使用的数据集的大小/字节的值(默认3字节) |
-k |
1:表示保持连接(默认值)0:重新连接 |
-r |
SET/GET/INCR方法使用随机数插入数值,设置10则插入值为rand:000000000000 - rand:000000000009 |
-P |
默认为1(无管道),当网络延迟过长时,使用管道方式通信(请求和响应打包发送接收) |
-q |
简约信息模式,只显示查询和秒值等基本信息。 |
--csv |
以CSV格式输出信息 |
-l |
无线循环插入测试数据,ctrl+c停止 |
-t |
只运行 |
-I |
空闲模式。立即打开50个空闲连接和等待。 |
例子: $ redis-benchmark基本测试 $ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20 $ redis-benchmark -t set -n 1000000 -r 100000000 $ redis-benchmark -t ping,set,get -n 100000 –csv $ redis-benchmark -r 10000 -n 10000 lpush mylist ele:rand:000000000000 |
|
|
|
Redis服务器的daemon启动程序
redis-server 启动并加装默认配置文件[/path/to/redis.conf]
redis-server /biran/conf/redis.conf启动并加装指定配置文件
redis-server - (read config from stdin) 使用标准输入读取配置为启动参数
redis-server --test-memory 256 检测256MB内存
redis-server –version 查版本号
Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
可输入redis-cli直接进入命令行操作界面。
redis-cli参数 |
|
-h |
设置检测主机IP地址,默认为127.0.0.1 |
-p |
设置检测主机的端口号,默认为6379 |
-s |
服务器套接字(压倒主机和端口) |
-a |
连接到Master服务器时使用的密码 |
-r |
执行指定的N次命令 |
-i |
执行命令后等待N秒,如–i 0.1 info(执行后等0.1秒) |
-n |
指定连接N号ID数据库,如–n 3(连接3号数据库) |
-x |
从控制台输入的信息中读取最后一个参数 |
-d |
定义多个定界符为默认输出格式(默认: \n) |
--raw |
使用原数据格式返回输出内容 |
--latency |
进入一个不断延时采样的特殊模式 |
--slave |
模拟一个从服务器到主服务器的命令显示反馈 |
--pipe |
使用管道协议模式 |
--bigkeys |
监听显示数据量大的key值,--bigkeys -i 0.1 |
--help |
显示命令行帮助信息 |
--version |
显示版本号 |
例子: $ redis-cli进入命令行模式 $ redis-cli -r 3 info 重复执行info命令三次 $ cat testStr.txt | redis-cli -x set testStr读取testStr.txt文件所有内容设置为testStr的值 $ redis-cli -r 100 lpush mylist x $ redis-cli -r 100 -i 1 info | grep used_memory_human |
更新日志检查 ,加--fix参数为修复log文件
redis-check-aofappendonly.aof
检查本地数据库文件
redis-check-dump dump.rdb
redis-clikeys \* #查看所有键值信息
redis-cli-n 1 keys "test*" | xargs redis-cli -n 1 del 删除DBID为1的test开头的key值
redis-cli info查询系统信息。默认为localhost,端口为6379。
redis-cli -p 6379 info | grep '\
当used_memory_rss接近maxmemory或者used_memory_peak超过maxmemory时,要加大maxmemory负责性能下降
redis服务的统计信息:
redis_version:2.4.14 |
Redis版本号 |
redis_git_sha1:00000000 |
|
redis_git_dirty:0 |
Git版本?? |
arch_bits:64 |
64位系统 |
multiplexing_api:epoll |
|
gcc_version:4.1.2 |
gcc版本号 |
process_id:5551 |
当前服务器进程id |
uptime_in_seconds:1538 |
正常工作时间(秒) |
uptime_in_days:0 |
正常工作天数 |
lru_clock:1975799 |
|
used_cpu_sys:0.04 |
Cpu使用率 |
used_cpu_user:0.09 |
|
used_cpu_sys_children:0.01 |
|
used_cpu_user_children:0.04 |
|
connected_clients:2 |
客户端连接数 |
connected_slaves:0 |
从服务器连接数 |
client_longest_output_list:0 |
|
client_biggest_input_buf:0 |
|
blocked_clients:0 |
锁定的客户端 |
used_memory:3765272 |
redis数据占用的内存,单位bytes(字节) |
used_memory_human:3.59M |
重点关注! |
used_memory_rss:4665344 |
redis占用的物理内存 |
used_memory_peak:3756712 |
redis使用物理内存的峰值 |
used_memory_peak_human:3.58M |
|
mem_fragmentation_ratio:1.24 |
内存碎片率 |
mem_allocator:jemalloc-2.2.5 |
内存分配器版本 |
loading:0 |
|
aof_enabled:0 |
是否开启纯累加模式 |
changes_since_last_save:0 |
|
bgsave_in_progress:0 |
后台异步保存数据的进程数 |
last_save_time:1340962658 |
|
bgrewriteaof_in_progress:0 |
异步重写 AOF 文件以反应当前数据库的状态的进程数 |
total_connections_received:3 |
接受到的总连接数 |
total_commands_processed:10156 |
服务器处理的命令数量 |
expired_keys:0 |
失效key的总数量 |
evicted_keys:0 |
已删除的key的总数量 |
keyspace_hits:0 |
Key命中次数 |
keyspace_misses:0 |
Key未命中次数 |
pubsub_channels:0 |
订阅信息 |
pubsub_patterns:0 |
|
latest_fork_usec:579 |
最近子进程 |
vm_enabled:0 |
是否使用虚拟内存0:不使用,1:使用 |
role:slave |
master为主服务器slave为从服务器 |
master_host:127.0.0.1 |
连接主服务器IP |
master_port:6379 |
连接主服务器端口号 |
master_link_status:up |
|
master_last_io_seconds_ago:2 |
距离最后一次的连接时间 |
master_sync_in_progress:0 |
同步主服务器进程数 |
db0:keys=3,expires=0 |
1号数据库保存的key数量,及超时时间 |
db1:keys=1,expires=0 |
2号数据库保存的key数量,及超时时间 |
redis-faina(https://github.com/Instagram/redis-faina)是由Instagram开发并开源的一个Redis查询分析小工具,需安装python环境。
redis-faina 是通过Redis的MONITOR命令来实现的,通过对在Redis上执行的query进行监控,统计出一段时间的query特性,需root权限。
通过管道从stdin读取N条命令,直接分析
redis-cli -p 6439 monitor | head -n
从一个文件中读取117773条命令,再分析
redis-cli -p 6439 monitor | head -n 117773 > /tmp/outfile.txt
./redis-faina.py /tmp/outfile.txt
其输出结果如下:
Overall Stats
========================================
Lines Processed 117773
Commands/Sec 11483.44
Top Prefixes(按key前缀统计)
========================================
friendlist 69945
followedbycounter 25419
followingcounter 10139
recentcomments 3276
queued 7
Top Keys(操作最频繁的key)
========================================
friendlist:zzz:1:2 534
followingcount:zzz 227
friendlist:zxz:1:2 167
friendlist:xzz:1:2 165
friendlist:yzz:1:2 160
friendlist:gzz:1:2 160
friendlist:zdz:1:2 160
friendlist:zpz:1:2 156
Top Commands(执行最多的命令)
========================================
SISMEMBER 59545
HGET 27681
HINCRBY 9413
SMEMBERS 9254
MULTI 3520
EXEC 3520
LPUSH 1620
EXPIRE 1598
Command Time (microsecs)(命令执行时长)
========================================
Median 78.25
75% 105.0
90% 187.25
99% 411.0
Heaviest Commands (microsecs)(耗时最多的命令)
========================================
SISMEMBER 5331651.0
HGET 2618868.0
HINCRBY 961192.5
SMEMBERS 856817.5
MULTI 311339.5
SADD 54900.75
SREM 40771.25
EXEC 28678.5
Slowest Calls(最慢的命令)
========================================
3490.75 "SMEMBERS""friendlist:zzz:1:2"
2362.0 "SMEMBERS""friendlist:xzz:1:3"
2061.0 "SMEMBERS""friendlist:zpz:1:2"
1961.0 "SMEMBERS" "friendlist:yzz:1:2"
1947.5 "SMEMBERS""friendlist:zpz:1:2"
1459.0 "SISMEMBER""friendlist:hzz:1:2" "zzz"
1416.25 "SMEMBERS""friendlist:zhz:1:2"
1389.75 "SISMEMBER""friendlist:zzx:1:2" "zzz"
从上面结果我们可以看到对Redis的操作规律,比如针对哪些key在进行操作,进行了什么操作,这些操作的效率如何等相关有用信息。
由于Redis的MONITOR 也对性能有所影响,所以建议在使用时不要一直开启MONITOR来分析。可以采用定时抽样一段时间来做样本分析。