转载自https://my.oschina.net/zhangxufeng/blog/828614
本文记录的redis常用命令主要是在阅读《Redis设计与实现》这本书的过程中记录的,目的有二:一是供以后使用时查阅,二是分享给读者,希望共同学习。
- object encoding msg 获取msg对应的值的实际存储结构
- type msg 获取msg当前的外部编码表现方式
- object idletime msg 获取msg最后一次使用时间与当前时间之间的间隔
- object refcount msg 获取msg对应的值对象的引用当前被共享的次数
- select 1 将redis当前使用的数据库切换为1号数据库
- flushdb 将当前数据库所有数据都清除
- flushall 将所有数据库中的数据都清除
- randomkey 获取当前数据库中随机的一个对象名
- exists msg 判断当前数据库中是否包含msg这个对象
- rename msg message 将名称为msg的对象重命名为message,如果message的键值对已经存在,则会将其覆盖
- renamenx msg message 如果message的键值对存在,则不会对其进行覆盖
- keys regex 返回名称匹配正则表达式regex的对象
- dbsize 获取当前数据库所拥有的对象数目
- monitor 实时获取当前服务器执行的命令
- move msg 2 将当前库中msg对应的键值对转移到索引为2的库
- migrate 127.0.0.1 7000 msg 0 1000 将当前redis中的msg键值对迁移到ip为127.0.0.1,端口为7000的redis实例中的0号数据库,如果1000毫秒内没有转移完则中断转移,当前命令只支持一个键值对的转移
- migrage 127.0.0.1 7000 "" 0 1000 keys msg msg1 msg2 将当前redis中的键msg、msg1、msg2数据迁移到ip为127.0.0.1,端口为7000的redis实例中的0号数据库,如果1000毫秒内没有转移完成则中断转移,当前命令支持多个键值对的转移
- scan 0 对数据库中的键进行遍历,0表示一个游标,返回值中包括下一次需要遍历的游标和当前遍历得到的键值对,然后依次对返回的游标进行遍历即可,直到最后返回的游标变为0说明遍历完成
- hscan fruits 0 渐进式的遍历hash表fruits中所有的键值对
- sscan students 0 渐进式的遍历集合students中所有的键值对
- zscan students 0 渐进式的比那里有序集合students中所有的键值对
- conf rewrite 将当前缓存中的配置文件信息持久化到配置文件中
-
info server 查看服务器属性
-
info stats 查看服务器在最近一秒内处理的命令请求数量,该命令是通过计算上次抽样和这次抽样之间执行的命令数量除以当前时间段来得出的一个估算值
-
info memory 查看服务器当前使用的内存情况
-
info replication 查看当前服务器链接的从服务器的状态
-
client list 查看服务器当前链接的客户端数量
-
client kill 127.0.0.1:6379 杀除ip为127.0.0.1,端口为6379的客户端的链接
-
object idle time msg 查看名称为msg的对象的空转时长
- expire msg 10 以秒为单位设置msg的过期时间,这里将其设置为10秒,注意设置的是剩余多少时间
- pexpire msg 1000 以毫秒为单位设置msg的过期时间,注意设置的是剩余多少时间
- setex msg 10 "value" 为字符串msg设置值value并设置过期时间为10秒
- expireat msg 10 以秒为单位设置过期时间,注意设置的是到期的时间点,客户端使用
- pexpireat msg 1000 以毫秒为单位设置过期时间,注意设置的是到期的时间点,客户端使用
- ttl msg 对于设置了过期时间的msg,以秒为单位获取其剩余多少时间,返回-1表示该键没有设置过期时间,-2表示该键不存在
- pttl msg 对于设置了过期时间的msg,以毫秒为单位获取其剩余多少时间,返回-1表示该键没有设置过期时间,-2表示该键不存在
- persist msg 移除msg的过期时间
- set msg "hello world" 添加一条键为msg,值为"hello world"的数据
- get msg 获取键为msg所对应的数据
- append msg "abc" 将abc添加到字符串后边
- mset a 1 b 2 c 3 d 4 批量设置键为a、b、c、d,值分别为1、2、3、4
- mget a b c d 批量获取键为a、b、c和d对应的值
- incrbyfloat num 2.3 将num转化为浮点数,然后加上2.3并保存起来
- incrby num 4 将num加上4并保存起来
- decrby num 2 将num减去2并保存起来
- strlen msg 获取字符串msg的长度
- setrange msg 10 "test" 将字符串msg从脚标为10的字符开始长度为test的长度的部分替换为test
- getrange msg 1 3 获取字符串msg中脚标从1开始到脚标为3(包括)的字符
- rpush msg "a" "b" "c" 将a b c三个字符依次插入到链表msg的表尾,最后得到的顺序是a b c
- lpush msg "a" "b" "c" 将a b c三个字符依次插入到链表msg的表头,最后得到的顺序是c b a
- lpop msg 将链表msg表头元素弹出
- rpop msg 将链表msg表尾元素弹出
- lindex msg 1 获取链表msg中索引为1的元素
- llen msg 获取链表msg的长度
- linsert msg before/after "a" "b" 在链表msg中从左往右找到第一个a,然后在其前/后插入元素b
- ltrim msg 0 4 将链表索引从0到4(包含)的元素之外的元素去除掉
- lrem msg 2 "a" 将链表msg中从左开始前2个元素为a的元素删除,这里2可以为正数也可以为负数,当为负数时表示从右往左找两个值为a的元素进行删除,如果把2改为0,则表示删除所有的值为a的元素
- lset msg 1 "f" 将链表msg中索引为1的元素值设置为f
- lrange msg 0 -1 获取msg对应链表对应范围的元素,如为-1则获取全部
- brpop msg [key...] timeout 从链表msg右端弹出名称为key指定的元素(key可以没有,没有则弹出右边一个元素即可),该命令是阻塞式的,如果等待timeout时间没有获取到元素则退出等待
- blpop msg [key...] timeout 从链表msg左端弹出名称为key指定的元素(key可以没有,没有则弹出左边一个元素即可),该命令是阻塞式的,如果等待timeout时间没有获取到元素则退出等待
- hset book author "Dany" 在hash表book中插入键为author,值为Dany的元素
- hget book author 获取hash表book中键位author的元素
- hexists book author 查询hash表book中是否包含键位author的元素
- hdel book author 删除hash表book中键位author的键值对
- hlen book 查询hash表book中的键值对数目
- hgetall book 获取hash表book中所有的键值对
- hincrby book count 1 将hash表book中的键为count的值自增1
- hincrbyfloat book price 10.5 将hash表book中的键为price的值自增10.5
- hstrlen book author 获取hash表book中键为author的值的长度
- hkeys book 获取hash表book中的所有键
- hvals book 获取hash表book中的所有值
- hmget book author count 获取hash表book中键为author和count所对应的值,这里的键的数量可以根据需要延伸
- hmset book author "Rose" count 2 将hash表book中键为author的值设置为Rose,将键count对应的值设置为2,这里键值对可以根据需要延伸
- sadd fruits "apple" "banana" 向集合fruits中添加元素apple和banana
- scard fruits 获取集合fruits元素个数
- sismember fruits "apple" 查询集合fruits中是否包含元素apple
- smembers fruits 获取集合fruits中所有的元素
- srandmember fruits 获取集合fruits中随机的一个元素
- spop fruits 随机弹出集合fruits中的一个元素
- srem fruits "apple" 移除集合fruits中的元素apple
- sinter students1 students2 求集合键students1和students2中元素的交集,这里集合可以有多个
- sunion students1 students2 将集合键students1和students2中元素取并集,这里集合可以有多个
- sdiff students1 students2 获取集合students1中去除集合students2中交集部分元素剩余的元素
-
zadd fruits 3 "apple" 4 "banana" 2 "tomato" 向有序集合fruits中添加三个元素tomato,apple,banana,其分值分别为2,3,4,并且按照分值从小到大的顺序排列
-
zcard fruits 获取有序集合fruits中所有元素的数量
-
zcount fruits 2 3 统计有序集合fruits中分值在2和3(闭区间)之间的元素个数
-
zrank fruits "apple" 获取有序集合fruits中元素apple的分值的排名(从低到高)
-
zrevrank fruits "apple" 按照从高到低的顺序获取有序集合fruits中元素apple的分值的排名
-
zrangebyscore fruits (2 3] (withscores) (limit offset count) 获取分数大于2,小于等于3的集合元素,这里也可以使用-inf和+inf表示负无穷和正无穷,并且后边的withscores和limit都是可选的
-
zrange fruits 0 1 (withscores) 以升序方式获取索引在给定范围内的元素
-
zrevrange fruits 0 1 (withscores) 以降序方式获取索引在给定范围内的元素
-
zrem fruits apple 删除有序集合fruits中名称为apple的元素及其分值
-
zremrangebyrank fruits 0 3 删除有序集合中排名在0和3(闭区间)之间的元素
-
zremrangebyscore fruits 2 3 删除有序集合中分值在2和3(闭区间)之间的元素
-
zscore fruits tomato 获取有序集合fruits中名称为tomato的元素的分值
-
zincrby fruits 5 "apple" 将有序集合fruits中的元素apple的值自增5
-
psync <runid> <offset> 从服务器请求与主服务器同步,runid为主服务器的id,offset是同步偏移量
-
slaveof 127.0.0.1 12345 将当前redis服务器设置为ip为127.0.0.1,端口为12345的服务器的从服务器,并进行复制操作
-
ping 测试与主服务器的链接是否正常
-
auth 123456 获取主服务器的授权,密码为123456
-
replconf listing-port 12345 向主服务器发送当前从服务器监听的端口号12345
-
replconf ack 2534 从服务器向主服务器定时发送的命令,其中2534是从服务器当前的命令偏移量;该命令作用有三:①测试主服务器与从服务器是否链接正常;②服务实现min-slaves-to-write和min-slaves-max-lag选项(min-slaves-to-write和min-slaves-max-lag参数的意义:min-slaves-to-write表示从服务器的数量至少为多少个主服务器才执行写命令;min-slaves-max-lag表示每个从服务器的lag值都小于多少时主服务器才执行写命令(这里lag可以理解为主服务器与从服务器链接的延迟,一般是在0到1秒内跳动));③通过命令偏移量查看从服务器与主服务器传输过程中是否有命令缺失,缺失了就进行同步。
-
redis-sentinel sentinel-26379.conf 按照sentinel-26379.conf配置文件的配置启动redis-sentinel
-
sentinel masters 查看当前sentinel监控的所有master节点
-
sentinel master mymaster 查看当前sentinel监控的名称为mymaster的主节点的信息
-
sentinel slaves mymaster 查看当前sentinel监控的名称为mymaster的主节点的所有从节点的信息
-
sentinel sentinels mymaster 查看当前sentinel监控的mymaster主节点的所有sentinel节点
-
cluster meet 127.0.0.1 7000 将当前节点作为主节点链接ip为127.0.0.1,端口为7000的节点组成一个集群
-
cluster nodes 显示当前节点所在集群的所有节点信息
-
cluster info 查看当前集群的信息
-
cluster keyslot msg 查看msg这个键所在的槽位
-
cluster getkeysinslot <slot> <count> 获取槽位slot中最多count个键
-
cluster setslot 16198 importing 9dfb4c4e016e627d9769e4c9bb0d4fa208e65c26 从指定id所对应的节点将槽16198迁移到当前节点
-
cluster setslot 16198 migrating 9dfb4c4e016e627d9769e4c9bb0d4fa208e65c26 将当前节点中的槽16198迁移到指定id所对应的节点
-
subscribe 127.0.0.1:6379 订阅127.0.0.1:6379广播的消息
-
psubscribe 127.0.0.2:63.* 订阅模式127.0.0.1:63.*模式匹配的频道消息
-
unsubscribe 127.0.0.1:6379 取消订阅127.0.0.1:6379广播的消息
-
punsubscribe 127.0.0.1:63.* 取消订阅127.0.0.1:63.*模式匹配的频道消息
-
publish 127.0.0.1:6379 "hello world" 向频道127.0.0.1:6379发布消息"hello world"
-
pubsub channels [pattern] pattern参数是可选的,匹配服务器当前被订阅的频道
-
pubsub numsub <channels>... 接收任意多个频道作为输入参数,并返回这些频道的订阅者数量
-
pubsub numpat 返回服务器当前订阅模式的数量
-
multi 标识redis服务器进入事务状态,接下来执行的命令将被存入事务队列
-
exec 执行事务队列中的命令,并将redis服务器标识为非事务状态
-
discard 取消当前准备执行的事务
-
watch msg 监视msg这个键,如果在执行事务的过程中该键被修改了,那么表示该事务失败了
-
sort names alpha desc limit 0 5 对names这个集合按照字母顺序排序,并取索引从0开始的5个元素
-
sort names alpha desc limit 0 5 store sortednames 对names这个集合按照字母顺序排序,并取集合的从0开始的5个元素,并将其保存在sortednames这个键里面(已存在该键则删除,再创建)
-
sort names alpha desc limit 0 5 get *-birth 对names这个集合按照字母顺序排序,并取集合的从0开始的5个元素,将每个元素后拼接“-birth”,如duoduo-birth,然后调用get duoduo-birth获取其值,依次将每个元素打印出来
-
bitset bit 0 1 将键bit从右往左第0号位上的值设为1
-
getbit bit 0 获取键bit第0号位上的值
-
bitcount bit 获取键bit中值为1的位的个数
-
bitcount bit 2 10 获取键bit从第2(包含)个到第10(包含)个字节之间的值为1的个数
-
bitop and and-result x y 对x和y进行按位与运算,并将运算结果保存在and-result中
-
bitop or or-result x y 对x和y进行按位或运算,并将运算结果保存在or-result中
-
bitop xor xor-result x y 对x和y进行按位异或运算,并将运算结果保存在xor-result中
-
slowlog get 获取所有的慢查询日志
-
slowlog len 获取慢查询日志的条数
-
slowlog reset 清除所有的慢查询日志
- # redis-cli script load "$(cat lua_get.lua)" 加载名称为lua_get.lua的lua脚本,并且返回生成的sha校验和
- script exists 7413dc2440db1fea7c0a0bde841fa68eefaf149c 判断是否存在指定校验和的lua脚本
- script flush 清除所有已经加载的lua脚本
- script kill 杀死当前正在执行的lua脚本