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