当前位置:   article > 正文

Redis命令详解

Redis命令详解

原文地址:https://program-park.github.io/2021/06/24/redis_6/

一、全局命令

  1. 查看当前所有key
keys *
  • 1
  1. 判断某个key是否存在(存在返回1,不存在返回0)
exists key
  • 1
  1. 查看key是什么类型(key不存在返回none)
type key
  • 1
  1. 删除key(返回成功删除key的个数)
del key
  • 1
  1. 键重命名
rename key newkey
renamenx key newkey 只有newkey不存在时才会被覆盖
  • 1
  • 2
  1. 为指定的key设置过期时间
expire key 10		单位秒,过期后会自动删除
expireat key 10		单位秒,10秒后过期
pexpire key 1000	单位毫秒,超过过期时间后会自动删除
pexpireat key 1000	单位毫秒,1000毫秒后过期
  • 1
  • 2
  • 3
  • 4
  1. 查看还有多少秒过期,-1表示永不过期,-2表示已过期
ttl key
  • 1
  1. 随机返回一个key
randomkey
  • 1
  1. 迁移键
(1)move key db (不建议再生产环境中使用)把指定的键从源数据库移动到目标数据库
(2)dump+restore
	dump key
	Restore key ttl value
	Dump+restore可以实现在不同的redis实例之间进行数据迁移的功能,整个迁移的过程分为两步;
	1)在源redis上,dump命令会将键值序列化,格式采用的是RDB格式
	2)在目标redis上,restore命令将上面序列化的值进行复原,其中ttl参数代表过期时间,ttl=0代表没有过期时间
	=======例=======
	源redis
	127.0.0.1:6379> get redis
	"world"
	127.0.0.1:6379> dump redis
	"\x00\x05world\a\x00\xe6\xe3\xe9w\xd8c\xa7\xd8"
	目标redis
	127.0.0.1:6379> get redis
	(nil)
	127.0.0.1:6379> restore redis 0 "\x00\x05world\a\x00\xe6\xe3\xe9w\xd8c\xa7\xd8"
	OK
	127.0.0.1:6379> get redis
	"world"
(3)migrate
	migrate实际上是把dump、restore、del 3个命令进行组合,从而简化了操作步骤
	源redis中执行
	127.0.0.1:6379> migrate xxx.xxx.xxx.xxx 6379 flower 0 1000 replace
	(将键flower迁移至目标xxx.xxx.xxx.xxx:6379的库0中,超时时间为1000毫秒,replace表示目标库如果存在键flower,则覆盖)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  1. 遍历key
(1)全量遍历键
	keys pattern
(2)渐进式遍历
	scan 可以有效的解决keys命令存在的阻塞问题,scan每次的额复杂度是O(1)
  • 1
  • 2
  • 3
  • 4

二、数据库管理

  1. 切换数据库(默认16个,根据编号0-15区分不同数据库,进入redis后默认是0库)
select 3
  • 1
  1. 查看当前数据库的key的数量
dbsize
  • 1
  1. 清空当前数据库
flushdb
  • 1
  1. 清空所有数据库
flushall
  • 1

三、针对key的操作

  1. 设置值
set key value [ex]  [px]  [nx|xx]
ex为键值设置秒级过期时间
px为键值设置毫秒级过期时间
nx键必须不存在,才可以设置成功,用于添加
xx与nx相反,键必须存在,才可以设置成功,用于更新
setnx、setex 与上面的nx、ex作用相同
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 获取值(不存在则返回nil)
get key 
  • 1
  1. 批量设置值
mset key value [key value ......]
mset a 1 b 2 c 3 d 4
  • 1
  • 2
  1. 批量获取值
mget key [key ......]
  • 1
  1. 计数
incr key
decr key /inceby key increment /decrby key increment
返回结果分为3中情况:
值不是整数,返回错误;
值是整数,返回自增后的结果;
键不存在,按照值为0自增,返回结果为1。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 追加值
append key value 可以向字符串尾部追加值
  • 1
  1. 字符串长度
strlen key	每个汉字占用3个字字节
  • 1
  1. 设置并返回原值
getset key value
  • 1
  1. 设置指定位置的字符
setrange key offeset value
127.0.0.1:6379> get liming
"class4"
127.0.0.1:6379> setrange liming 0 m
(integer) 6
127.0.0.1:6379> get liming
"mlass4"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 获取部分字符串
getrange key start end 
start和end分别为开始和结束的偏移量,偏移量从0开始
  • 1
  • 2

四、Hash操作

  1. 设置值
hset key field value
hset user:1 name tom
  • 1
  • 2
  1. 获取值
hget key field
127.0.0.1:6379> hset user:1 name Tom
(integer) 1
127.0.0.1:6379> hget user:1 name
"Tom"
127.0.0.1:6379> hget user:1 age
(nil)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 删除field
hdel key field [field ......]
会删除一个或多个field,返回结果为成功删除fiel的个数
  • 1
  • 2
  1. 计算field的个数
hlen key
  • 1
  1. 批量设置或获取field-value
Hmget key field [field ......]
Hmset key field value [field value]
  • 1
  • 2
  1. 判断field是否存在
hexists key field
  • 1
  1. 获取所有field
hkeys key
127.0.0.1:6379> hkeys user:1
1) "name"
2) "age"
3) "grand"
4) "city"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 获取所有value
hvals key
127.0.0.1:6379> hvals user:1
1) "Tom"
2) "20"
3) "3"
4) "beijing"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 获取所有的field、value
hgetall key
  • 1
  1. 计算value字符串的长度
hstrlen key field
  • 1

五、列表List操作

1. 添加

  1. 从右边插入元素
rpush key value [value......]
  • 1
  1. 从左边插入元素
lpush key value [value......]
  • 1
  1. 向某个元素前或者后插入元素
linsert key before|after pivot value
linsert命令会从列表中找到等于pivot的元素,在其前或者后插入一个新的元素value

127.0.0.1:6379> rpush mylist a b c d e f b a 
(integer) 8
127.0.0.1:6379> linsert mylist after f g
(integer) 9
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
7) "g"
8) "b"
9) "a"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2. 查找

  1. 获取指定范围内的元素列表
lrange key start end 索引下标从左到右分别是0到N-1,从右到左分别是-1到-N;end选项包含了自身
lrange key 0 -1 可以从左到右获取列表的所有元素
lrange mylist 1 3 获取列表中第2个到第4个元素
  • 1
  • 2
  • 3
  1. 获取列表指定下标的元素
lindex key index
  • 1
  1. 获取列表长度
llen key
  • 1

3. 删除

  1. 从列表右侧弹出元素
rpop key
  • 1
  1. 从列表左侧弹出元素
lpop key
  • 1
  1. 删除指定元素
lrem key count value
Lrem命令会从列表中找到=value的元素进行删除,根据count的不同分为3种情况:
1)Count>0,从左到有,删除最多count个元素
2)Count<0,从右到左,删除最多count绝对值个元素
3)Count=0,删除所有  

列表listaaa为a a a a java php b a b
127.0.0.1:6379> lrem listaaa 5 a
(integer) 5
127.0.0.1:6379> lrange listaaa 0 -1
1) "java"
2) "php"
3) "b"
4) "b"
127.0.0.1:6379> lrem listaaa 3 php
(integer) 1
127.0.0.1:6379> lrange listaaa 0 -1
1) "java"
2) "b"
3) "b"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

4. 修改

lset key index newValue 修改指定索引下标的元素
Eg:lset listaaa 1 python 
  • 1
  • 2

5. 阻塞操作

blpop key [key ...] timeout
brpop key [key ...] timeout
blpop和brpop是lpop、rpop的阻塞版本,除了弹出方式不同,使用方法基本相同,timeout阻塞时间
  • 1
  • 2
  • 3
  1. 列表为空
brpop list:test 3 	3秒后返回
brpop list:test 0 	一直处于阻塞中
  • 1
  • 2
  1. 列表不为空
brpop mylist 0 	立刻返回

127.0.0.1:6379> brpop mylist 0
1) "mylist"
2) "a"
  • 1
  • 2
  • 3
  • 4
  • 5

六、Set操作(不可重复)

1. 集合内的操作

  1. 添加元素
sadd key element [element .....] 	返回结果为添加成功的元素个数
  • 1
  1. 删除元素
srem key element [element .....] 	返回结果为删除成功的元素个数
  • 1
  1. 计算元素个数
Scard key 	scard的时间复杂度为O(1),直接用redis内部的变量
  • 1
  1. 判断元素是否在集合中
Sismember key element 	在集合中则返回1,否则返回0
  • 1
  1. 随机从集合返回指定个数元素
Srandmember key [count] 	count可不写,默认为1
  • 1
  1. 从集合随机弹出元素
Spop key [count] 	3.2版本开始支持[count]
  • 1
  1. 获取所有元素
Smembers key 	它和lrange、hgetall都属于比较重的命令,有时候可以使用sscan来完成
  • 1

2. 集合间的操作

  1. 求多个集合的交集
sinter key [ key ......]
  • 1
  1. 求多个集合的并集
sunion key [key ......]
  • 1
  1. 求多个集合的差集
sdiff key [key ......]	第一个key里面有的,第二个key里面没有的
  • 1
  1. 将交集、并集、差集的结果保存
sinterstore destination key [ key ......]
sunionstore destination key [ key ......]
sdiffstore destination key [ key ......]
例如:sinterstore user:1_2:inter user:1 user:2 user:1_2:incr也是集合类型
  • 1
  • 2
  • 3
  • 4

七、ZADD操作(有序集合)

  1. 添加成员
zadd key score member[score member .....] 返回结果为添加成功的元素个数
  • 1
  1. 计算成员个数
zcard key scard的时间复杂度为O(1),直接用redis内部的变量
  • 1
  1. 计算某个成员分数
zsore key member
  • 1
  1. 计算成员的排名
zrank key member
  • 1
  1. 删除成员
zrem key member [member .......]
  • 1
  1. 增加成员的分数
zincrby key increment member
  • 1
  1. 返回指定排名范围的成员
zrange key start end [withscores] 		从低分到高分
zrevrange key start end [withscores] 	从高分到低分
  • 1
  • 2
  1. 返回指定分数范围的成员
zrange key min max [withscores] [limit offset count ] 		按照分数从低分到高分
zrevrange key max min [withscores] [limit offset count ] 	按照分数从高分到低分
  • 1
  • 2
  1. 返回指定分数范围的成员个数
zcount key min max
  • 1
  1. 删除指定排名内的升序元素
zremrangebyrank key start end
  • 1
  1. 删除指定分数范围的成员
zremrangebystore key min max
  • 1

八、pub/sub(发布、订阅)

  1. 发布消息
publish channel message
publish channel:sports 'I want to go eatting'
  • 1
  • 2
  1. 订阅消息
subscribe channel [channel .....]
subscribe channel:sports
  • 1
  • 2
  1. 取消订阅
unsubscribe channel [channel .....]
  • 1
  1. 按照模式订阅
psubscribe pattern [pattern ......]
  • 1
  1. 按照模式取消订阅
unpsubscribe pattern [pattern ......]
  • 1
  1. 查询订阅
(1)查看活跃的频道
	pubsub channels
	127.0.0.1:6379> pubsub channels
   1) "channel:sports"
   2) "__sentinel__:hello"
(2)查看频道订阅数
	pubsub numsub [channel ......]
	pubsub numsub channel:sports
(3)查看模式订阅数
	pubsub numpat
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. 说明:
    客户端在执行订阅命令之后进入了订阅状态,只能接收四个命令:subscribe、psubscribe、unsubscribe、punsubscribe;
    新开启的订阅客户端,无法收到该频道之前的消息,因为redis不会对发布的消息进行持久化。

九、Transaction(事务)

  1. 取消执行事务块内的所有命令
discard
  • 1
  1. 执行事务块内的命令
exec
  • 1
  1. 标记一个事务块的开始
multi
  • 1
  1. 取消watch命令对所有key的监视
unwatch
  • 1
  1. 监视一个或者多个key,如果事务执行之前,这个kye被其它命令所动,则事务被打断
watch key [key ...]
  • 1

十、Connection(连接)

  1. 登录redis时输入密码
auth password
  • 1
  1. 打印一个特定的信息message,测试时使用
echo message
  • 1
  1. 测试与服务器的连接,如果正常则返回pong
ping
  • 1
  1. 请求服务器关闭与当前客户端的连接
quit
  • 1
  1. 切换到指定的数据库
select index
  • 1

十一、Server(服务器)

  1. 后台异步保存数据到硬盘
bgsave
  • 1
  1. 为连接设置、获取名字
client setname/client getname
  • 1
  1. 关闭地址为 ip:port的客户端
client kill ip:port
  • 1
  1. 以人类可读的方式,返回所有的连接客户端信息和统计数据
client list
  • 1
  1. 取得运行redis服务器的配置参数
config get parameter
  • 1
  1. 设置redis服务器的配置参数
config set parameter value
  • 1
  1. 重置info命令的某些统计数据
config resetstat 
  • 1
  1. 返回redis服务器的各种信息和统计数据
info [section]
  • 1
  1. 返回最近一次redis成功将数据保存到磁盘时的时间
lastsave
  • 1
  1. 实时打印出redis服务器接收到的指令
monitor
  • 1
  1. 将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘
save
  • 1
  1. 将当前服务器转变为指定服务器的从属服务器
slaveof host port
  • 1
  1. Redis 用来记录查询执行时间的日志系统
slowlog subcommand [argument]
  • 1

觉得有用的点个收藏吧,需要的时候还能找找命令
部分内容摘自https://segmentfault.com/a/1190000010999677

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/452192
推荐阅读
相关标签
  

闽ICP备14008679号