记录一下redis 使用的命令,redis练习命令官网
启动停止命令
-
启动
redis-server
以配置项的方式启动
redis-server --{configKey1} {configvalure1}
配置文件方式启动
redis-server /opt/redis/redis.conf
-
停止
使用redis-cli 客户端redis-cli shutdown [nosave|save]
redis 关闭过程:
- 断开与客户端的连接
- 持久化文件生成
关于持久化文件的生成可以是用save|nosave
选项控制
redis-cli
redis-cli -h {server_ip} -p {port} -a {password}
数据库命令
-
切换数据库
select {dbindex}
redis 默认配置0到15 总共16个数据库,各个数据库之间的数据没有关联。
-
清除当前数据库
flushdb
-
清除所有的数据库
flushall
键管理相关命令
-
查看所有键
keys *
-
键总数
dbsize
-
检查键是否存在
exist {key}
-
删除键
del {key}
-
键的数据结构类型
type {key}
-
键的内部编码
object encoding {key}
键一共有5种,但其类型编码有多种
image.png
键过期相关
- 键过期
expire {key} seconds
字符串
-
设置值
set {key} {value} [ex {seconds}] [px {milliseconds}] [nx|xx]
-
获取值
get {key}
如果获取的键不存在,则返回
nil
-
批量设置值
mset {key} {value} {key} {value} ...
-
批量获取值
mget {key} {key} ...
-
计数
incr {key}
结果分为3种情况:
- 值不是整数
- 值是整数,返回自增后的结果
- 键不存在,按照值为0自增,返回结果为1
类似的,还提供了自减命令decr {key}
,自增指定数字incrby {key} {increment}
,自减指定数字decrby {key} {decrement}
,自增浮点数incrbyfloat key increment
-
追加
append {key} {value}
-
返回value的长度
strlen {key}
哈希
- 设置
设置成功返回1,反之返回0hset {key} {field} {value} eg: hset user:1 name tom
- 获取
如果键不存在,则返回hget {key} {field} eg: hget user1:1 name
nil
- 批量设置
- 批量获取
- 删除
返回删除的个数hdel {key} {field} {field} ...
- 计算个数
hlen key
- 判断 field 是否存在
{key}中包含{field}域,返回1,不包含返回0hexists {key} {field}
- 获取所有的 field
hkeys {key}
- 获取所有的 value
hvals {key}
- 获取所有的 field-value
hgetall {key}
列表
-
添加
-
从右向左插入元素
rpush {key} {value} {value} ...
eg: rpush list 100 4 89 55 11,将会是:
image.png -
从左向右插入元素
lpush {key} {value} {value} ...
eg: lpush list 100 4 89 55 11,将会是:
image.png -
向某个元素的前或者后插入元素
linsert {key} befor|after {pivot} {value}
-
-
查询
- 获取指定范围的元素
lrange {key} {start} {end}
- 获取指定索引的元素
lindex {key} {index}
- 获取指定范围的元素
-
获取列表元素数量
llen {key}
-
删除
- 从左侧弹出元素
lpop {key}
- 从右侧弹出元素
rpop {key}
- 删除指定元素
从列表中找到等于value的元素,按照count的不同分为3种情况lrem {key} {count} {value}
- count > 0
- count < 0
- count = 0 删除所有
- 从左侧弹出元素
-
按照范围修剪列表
ltrim {key} {start} {end} eg: ltrim lis 1 3 // 将会只保留第[2, 4]
-
修改指定索引下标的元素
lset {key} {index} {newValue}
-
阻塞操作
bloop {key}
集合
集合中不允许有重复的元素,并且集合中的元素是无序的,不能通过下标获取元素。
但是集合方便的是可以多个集合取交集,并集,差集。
集合的内部编码有2种:
- 添加元素
返回结果为添加成功的元素个数sadd {key} {element} {element} ...
- 删除元素
返回结果为删除成功的元素个数srem {key} {element} {element}
- 计算元素个数
scard {key}
- 判断元素是否在集合中
sismember {key} {element}
- 随机从集合返回指定个数元素
[count]为可选参数,默认为1srandmember {key} [count]
- 从集合随机弹出元素
3.2版本后支持[count]为可选参数,默认为1spop {key} [count]
- 获取所有元素
smembers {key}
- 求多个集合的交集
还可以将结果保存在新的集合中sinter {key} {key} ...
sinterstore {destination} {key} {key} ...
- 求多个集合的并集
还可以将结果保存在新的集合中sunion {key} {key}
sunionstore {destination} {key} {key} ...
- 求多个集合的差集
还可以将结果保存在新的集合中sdiff {key} {key}
sdiffstore {destination} {key} {key} ...
有序集合
Info 命令
使用Redis 时,通常需要诊断很多问题,在诊断之前,可以通过强大的Info命令,可以清晰的知道Redis 内部运行的一系列参数。
Info 命令显示的信息比较多,包括9大块:
- Server 服务器运行的环境参数
- Clients 客户端相关信息
- Memory 服务器运行内存统计
- Persistence 持久化信息
- Stats 通用统计信息
- Replication 主从复制相关信息
- CPU CPU使用相关情况
- Cluster 集群信息
- KeySpace: 键值对统计数量信息
这里介绍一些常用的:
-
查看Redis 每秒执行了多少次命令
Redis 每秒可以执行10万次命令,CPU 几乎被完全榨干,
-
Redis 连接了多少客户端
redis-client clients
通过这个可以观察是否确定意料之外的连接,如果发现数量不对劲,那么可以使用
client list
指令列出所有的客户端地址来进一步确定。还需要注意的是,它表示因为超出最大连接数限制而被拒绝的客户端连接次数,如果这个数字很大,那么意味着服务器最大连接数设置得过低,需要调整maxclients 参数。
-
Redis 内存占用多大
redis-cli info memory
如果redis内存占用过大,并且在业务上没有太多压缩的空间,那么可以考虑集群化了。
-
复制积压缓冲区多大
复制积压缓冲区大小非常重要,它严重影响了主从复制的效率。当从节点因为网络原因临时断开了对主节点的复制,然后网络恢复又重新连接上的时候,这段断开的时间内发生在主节点上的修改操作指令都会被放在积压缓冲区内,这样从节点可以通过积压缓冲区恢复中断的主从同步过程。
image.png积压缓冲区是环形的,后来的指令会覆盖掉前面的内容,如果从节点断开的时间过长,或者缓冲区的容量设置得太小,都会导致从节点无法快速恢复中断的主从同步过程。
慢查询相关
慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息记录下来。
-
慢查询的两个配置
slowlog-log-slower-than
预设阈值,单位是微秒,默认值是10000,值设置为0会记录所有的命令。
slowlog-max-len
Redis 使用了一个列表来存储慢查询日志,slowlog-max-len
就是列表的最大长度,当慢查询日志已经处于最大长度时,最早插入的一条命令将会从列表中移除。在 Redis 中有两种修改配置的方法:
- 修改配置文件
- 使用config set 命令动态修改
config set slowlog-log-slower-than 20000 config set slowlog-max-len 1000 config rewrite # 可选,将当前配置持久化到本地配置文件
- 配置建议
- 线上建议调大慢查询列表
- 默认值为10毫秒,对于高流量场景,如果命令执行时间在1毫秒以上,则OPS最多可支撑不带1000,所以高OPS场景,建议设置为1毫秒。
-
获取慢查询日志
slowlog get [n] # n 指定条数 1) 1) (integer) 666 # 慢查询标识id 2) (integer) 1456786500 # 时间戳 3) (integer) 12006 # 记录命令耗时 4) 1) "BGREWRITEAOF" # 命令
-
获取慢查询日志列表的当前的长度
slowlog len
-
重置慢查询日志
slowlog reset
网友评论