redis基本命令
注意:我使用的版本是6.0.10,不同版本可能略有差别
redis服务和客户端都启动之后,就可以进行存取操作了
测试连接
1 | ping |
基本存取
1 | set k1 hello |
切换数据库
redis默认存在16个数据库,默认使用的是0,可以使用select index来切换数据库(索引从0开始)
1 | select 2 |
清除数据
根据key删除
1 | del k2 |
清除当前库的数据
1 | flushdb |
清除所有库的数据
1 | flushall |
key操作
判断key是否存在
1 | EXISTS k1 |
查看当前数据库的key的数量
1 | dbsize |
查看所有的key
1 | keys * |
在生产环境最好不要使用keys命令,该命令为O(N),数据量大的情况下会导致redis阻塞其他操作,而且一次性返回所有的keys,对内存的消耗也很大,建议使用scan命令来操作
scan就是专门用来解决keys导致redis停顿的问题的,scan是一种迭代命令,其对keys进行了分解,即原本使用一个keys请求一次匹配获取所有符合的key的操作,分解了多次scan操作,每次scan操作返回匹配的key的一个子集,并记录游标,根据游标来进行偏移,这样每个scan请求的操作时间很短,多次scan请求之间可以执行其他命令,故减少对其他命令执行的阻塞,直到最后一个scan请求发现没有数据可返回了,则操作完成,汇总该次所有scan请求的数据,从而达到与keys命令一次获取的数据相同
返回的结果可能会有重复,需要做一下后期去重;遍历过程中如果有数据修改,改动后的数据不一定能获取到;单次返回结果为空并不意味着遍历结束,要看返回的游标值是否为0
1
2
3
4
5
6 scan cursor [MATCH pattern] [COUNT count] [TYPE type]
cursor表示游标
MATCH pattern 查询key的条件,可以做模糊查询
COUNT count 返回的条数
TYPE type 查询对应类型的key(string/list/set/hash/zset)
scan 0 MATCH user_* COUNT 1000
移动key到其他库
这里将key移动到其他库,当前库该key值就没有了
1 | move k1 2 |
设置过期时间
1 | 单位为秒 |
也可以在set值的时候设置过期时间
1 | ex单位秒 |
查看过期时间
查看还有多少秒过期,-1表示永不过期,-2表示已过期
1 | ttl k2 |
清除生存时间
将过期时间清除,变成永不过期
1 | persist key |
查看该key的值类型
1 | 返回的是值得类型 如string/list/set/hash/zset |
随机返回一个key
1 | randomkey |
重命名key
1 | rename key newkey |
获取服务器信息
1 | 返回服务器的基本信息以及配置信息 |
监控
1 | 监控服务器收到的请求 |
慢查询
需要配置slowlog-log-slower-than(阈值,单位微妙,默认10000,也就是10ms。如果配置为0,会记录所有的命令,如果配置小于0,则任何命令都不记录)和slowlog-max-len(存储最大条数)
1 | 获取慢查询日志 |
客户端
1 | 列出所有的连接 |
统计信息
1 | --stat可以实时获取redis的重要统计信息 |