Redis 学习1-5

第一章:

命令:
启动:
/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配置跳过错误,启动。
#####################################

  

posted on 2017-12-02 17:19  星期六男爵  阅读(143)  评论(0编辑  收藏  举报

导航