第一章:
命令:
启动:
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
redis-cli -p 6379
redis-cli shutdown
redis-cli shutdown save
Redi并不是万金油,一般用于缓存、排行榜、计数器、........
#####################################
第二章:
keys * #查看所有的键,遍历有的键,线上不使用,用dbsize
select 0-15 默认16个库
dbsize #查看键总数,直接获取键总数变量。
exists #检测键是否存在,1为存在,0 不存在
del key #支持多键删除 del key1 key2 key3
expire key #设置过期时间
ttl key #查看过期时间,>=1剩余过期时间、-1、没设置过期时间、-2不存在键
type key #字符串类
字符串、hash、列表、集合、有序集合
object encoding key #查询内部编码
Redis是单线程的,字符串类型最大值不能超过512M
set key value [EX seconds] [PX milliseconds] [NX|XX]
过期时间、 毫秒过期时间、不存在执行、存在执行
NX 用于insert数据
XX 用于update数据
setnx 分布式锁的实现方法
mset
mget
批量操作能提高效率,但是发送的命令数太多,会造成Redis阻塞或者网络拥塞
incr key #计数
append key
strlen key
getset key
setrange key
getrang key
hset key field-value
hget key field
hmget key field
hexist key field
hvals key
hgetall key #建议用hmget 或者hscan
############################
第三章:
慢查询只统计命令执行时间 单位微妙。
127.0.0.1:6379> config set slowlog-log-slower-than 0 单位微妙
OK
127.0.0.1:6379> config set slowlog-max-len 1000
OK
127.0.0.1:6379> config rewrite
OK
127.0.0.1:6379> slowlog get
1) 1) (integer) 2 #标识
2) (integer) 1512186808 #时间戳
3) (integer) 11398 #耗时
4) 1) "config" #执行的命令
2) "rewrite"
slowlog len 慢日志条数
slowlog reset 清空慢日志
高QPS建议config set slowlog-log-slower-than 1000 ##1毫秒
config set slowlog-max-len 1000 #会截断,建议1000条已上
[root@db10 ~]# redis-cli -r 5 -i 1 ping
PONG
PONG
PONG
PONG
PONG
[root@db10 ~]# redis-cli -r 5 -i 1 info |grep used_memory_human
used_memory_human:878.88K
used_memory_human:879.01K
used_memory_human:879.13K
used_memory_human:879.26K
used_memory_human:879.38K
[root@db10 ~]# echo "tom99" |redis-cli -x set name99
OK
[root@db10 ~]# redis-cli
127.0.0.1:6379> get name99
"tom99\n"
-c连接集群
redis-cli --slave #获取主库信息。
redis-cli --bigkeys #获取大的键值
redis-cli --latency #延时统计
redis-cli --latency-history -i
redis-cli --latency-dist
redis-cli --stat
redis-cli -raw 格式化输出
redis-cli --no-raw 非格式化输出
[root@db10 ~]# redis-cli --raw get name77
你好
[root@db10 ~]# redis-cli --no-raw get name77
"\xe4\xbd\xa0\xe5\xa5\xbd"
redis-server --test-memory
redis-benchmark -c 100 -n 20000 ##100个客户2万请求
redis-cli --pipe 封装,降低网络的消耗。研发使用
multi
exec
discard
###################
第四章 客户端
client list 实时查看,可能让redis阻塞
info clients
client_biggest_input_buf:0 输入缓冲区超过10M就告警。
输入和输出缓冲区不受到最大内存参数影响。
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
相对输入缓冲,输出缓冲异常的概率更大。通过上面3个参数调优
127.0.0.1:6379> config get maxclients
1) "maxclients"
2) "10000"
127.0.0.1:6379> config get timeout 可以设置300秒
1) "timeout"
2) "0"
client kill 127.0.0.1:33040
client pause 在线成本很高,不建议执行
monitor 会导致输出缓冲区暴涨
info clients
info stats
###################################
第五章 持久化
bgsave
info stats
latest_fork_usec:132
lastsave
info
rdb_last_save_time:1512199246
config set dir
config set dbfile
bgsave
可在线切换保存的路径。
rdb是全量备份,非实时
aof实时记录操作。
appendonly yes
appendfsync everysec 系统宕机可能会丢数据
bgrewriteaof
redis-check-dump
redis-check-aof --fix
aof-load-truncate配置跳过错误,启动。
#####################################