详细分析Redis常用命令(图文)

前言

原先写过很多关于Redis的知识点,推荐阅读:

  1. Redis框架从入门到学精(全)
  2. Redis的常见面试题(全)
  3. Redis 跳表(skiplist)知识点详解
  4. Python操作Redis从入门到精通附代码(全)

基本的只是都如上所示,本文主要讲解常用的命令
第一是应对开发中常用的测试
第二是近年软考常考redis知识

通过启动redis-server之后,用redis-cli进行连接即可

1. key键位命令

命令命令模版描述示例
DELDEL key删除指定的 keyDEL mykey
DUMPDUMP key序列化给定 key,并返回被序列化的值DUMP mykey
EXISTSEXISTS key检查给定 key 是否存在EXISTS mykey
EXPIREEXPIRE key seconds为 key 设置过期时间(秒)EXPIRE mykey 60
EXPIREATEXPIREATkey timestamp 以 UNIX 时间戳为单位设置 key 的过期时间EXPIREAT mykey 1672531199
KEYSKEYS pattern查找匹配给定模式的所有 keyKEYS user*
MOVEMOVE key db将 key 移动到另一个数据库MOVE mykey 1
PERSISTPERSIST key移除 key 的过期时间,令其持久存在PERSIST mykey
PEXPIREPEXPIRE key milliseconds设置 key 的过期时间(毫秒)PEXPIRE mykey 60000
PEXPIREATPEXPIREAT key milliseconds-timestamp设置毫秒级的 UNIX 时间戳作为 key 的过期时间PEXPIREAT mykey 1672531199123
PTTLPTTL key以毫秒为单位返回 key 的剩余存活时间PTTL mykey
RENAMERENAME key newkey将 key 重命名为 newkeyRENAME mykey newkey
RENAMENXRENAMENX key newkey当且仅当 newkey 不存在时,将 key 重命名为 newkeyRENAMENX mykey newkey
SORTSORT key [options]对 key 进行排序,返回或存储排序后的结果SORT mylist
TTLTTL key以秒为单位返回 key 的剩余存活时间TTL mykey
TYPETYPE key返回 key 所存储的值的类型TYPE mykey
UNLINKUNLINK key异步删除 key,避免阻塞 RedisUNLINK mykey
SCANSCAN cursor [MATCH pattern] [COUNT count]增量迭代数据库中的 keySCAN 0 MATCH user* COUNT 100

测试连接性

127.0.0.1:6379> ping
PONG

获取所有的key值

127.0.0.1:6379> keys *
1) "xxxx"

获取所有的键值

127.0.0.1:6379> dbsize
(integer) 180

部分截图如下:

在这里插入图片描述

查询键是否存在exists key [key ...],可以查询多个

127.0.0.1:6379> exists xxx yyy
(integer) 2

删除键del key [key ...],可以删除多个

127.0.0.1:6379> del xxx yyy
(integer) 2

查询键类型type key

127.0.0.1:6379> type xxx
string

查询key的生命周期(秒)

# 秒语法:ttl key
# 毫秒语法:pttl key
#-1:永远不过期
127.0.0.1:6379> ttl xxx
(integer) -1

移动键:move key db

127.0.0.1:6379> move xxx 2
(integer) 1
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> keys *
1) "xxx"

部分截图如下:

在这里插入图片描述

-1 为过期时间,还可以通过expire设置一个过期时间

127.0.0.1:6379> expire xxx 60
(integer) 1
127.0.0.1:6379> ttl xxx
(integer) 57

设置永不过期persist key

127.0.0.1:6379> persist xxx
(integer) 1

更改键名称rename key newkey

127.0.0.1:6379> rename xxx yyy
OK

部分截图如下:

在这里插入图片描述

2. list列表命令

命令命令模版描述示例
LPUSHLPUSH key value [value …]将一个或多个值插入到列表头部LPUSH mylist "a" "b"
RPUSHRPUSH key value [value …]将一个或多个值插入到列表尾部RPUSH mylist "a" "b"
LPOPLPOP key移除并返回列表的第一个元素LPOP mylist
RPOPRPOP key移除并返回列表的最后一个元素RPOP mylist
LLENLLEN key获取列表的长度LLEN mylist
LRANGELRANGE key start stop获取列表中指定范围的元素LRANGE mylist 0 -1
LINDEXLINDEX key index获取列表中指定索引的元素LINDEX mylist 0
LSETLSET key index value将列表中指定索引的元素设置为新的值 LSET mylist 0 "newvalue"
LREMLREM key count value从列表中移除指定的元素,count 表示移除的数量LREM mylist 2 "a"
LTRIMLTRIM key start stop修剪列表,只保留指定范围内的元素LTRIM mylist 1 3
RPOPLPUSHRPOPLPUSH source destination移除列表的最后一个元素并将其插入到另一个列表的头部RPOPLPUSH mylist myotherlist
BLPOPBLPOP key [key …] timeout阻塞弹出列表的第一个元素,若列表为空则等待直到超时或有新元素BLPOP mylist 0
BRPOPBRPOP key [key …] timeout阻塞弹出列表的最后一个元素,若列表为空则等待直到超时或有新元素BRPOP mylist 0
BRPOPLPUSHBRPOPLPUSH source destination timeout阻塞移除列表的最后一个元素,并将其插入到另一个列表头部BRPOPLPUSH mylist myotherlist 0

左端存值语法lpush key value [value ...]

127.0.0.1:6379> lpush xx a b c
(integer) 3

右端存值语法rpush key value [value ...]

127.0.0.1:6379> rpush yy a b c
(integer) 3

索引存值语法lset key index value

127.0.0.1:6379> lset xx 2 d
OK

左端弹出语法lpop key

右端弹出语法rpop key

获取元素个数llen key

在这里插入图片描述

获取列表元素lrange key start stop

获取所有lrange key 0 -1

右获取 lrange key -3 -1

索引获取语法lindex key index

删除元素lrem key count value

3. string字符串命令

命令命令模版描述示例
SETSET key value [EX seconds] [PX milliseconds]设置指定 key 的值。可选参数可以指定过期时间(秒或毫秒)SET mykey "Hello"
GETGET key获取指定 key 的值GET mykey
GETSETGETSET key value设置指定 key 的新值并返回旧值GETSET mykey "NewValue"
MSETMSET key value [key value …]一次设置多个 key-value 对MSET key1 "a" key2 "b"
MGETMGET key [key …]一次获取多个 key 的值MGET key1 key2
SETEXSETEX key seconds value设置 key 的值及其过期时间(秒)SETEX mykey 10 "Hello"
SETNXSETNX key value只有在 key 不存在时,才设置 key 的值SETNX mykey "Hello"
INCRINCR key将 key 的整数值加 1 INCR mycounter
INCRBYINCRBY key increment将 key 的整数值加指定的增量INCRBY mycounter 5
DECRDECR key将 key 的整数值减 1DECR mycounter
DECRBYDECRBY key decrement将 key 的整数值减指定的减量DECRBY mycounter 5
APPENDAPPEND key value将 value 追加到原 key 值的末尾APPEND mykey " World"
STRLENSTRLEN key返回 key 所存储的字符串值的长度STRLEN mykey
SETRANGESETRANGE key offset value用指定的字符串覆盖 key 从偏移量开始的值SETRANGE mykey 6 "Redis"
GETRANGEGETRANGE key start end返回 key 中字符串值的子字符串,范围由 start 和 end 指定GETRANGE mykey 0 4
MSETNXMSETNX key value [key value …]当所有给定 key 都不存在时,同时设置多个 key-value 对MSETNX key1 "a" key2 "b"

存放键值:set key value [EX seconds] [PX milliseconds] [NX|XX]
nx:如果key不存在则建立,xx:如果key存在则修改其值,也可以直接使用setnx/setex命令

如果字符串中的值是数字类型的,可以使用incr命令每次递增,不是数字类型则报错:incr key

4. set集合命令

命令命令模版描述示例
SADDSADD key member [member …]向集合中添加一个或多个成员SADD myset "apple" "banana"
SCARDSCARD key获取集合中成员的数量SCARD myset
SDIFFSDIFF key [key …]返回一个集合与其他集合的差集SDIFF myset1 myset2
SDIFFSTORESDIFFSTORE destination key [key …]将差集结果存储在指定的集合中SDIFFSTORE resultset myset1 myset2
SINTERSINTER key [key …]返回集合的交集SINTER myset1 myset2
SINTERSTORESINTERSTORE destination key [key …]将交集结果存储在指定的集合中SINTERSTORE resultset myset1 myset2
SISMEMBERSISMEMBER key member判断成员是否在集合中SISMEMBER myset "apple"
SMEMBERSSMEMBERS key返回集合中的所有成员SMEMBERS myset
SMOVESMOVE source destination member将指定成员从一个集合移动到另一个集合SMOVE myset1 myset2 "apple"
SPOPSPOP key [count]随机移除并返回集合中的一个或多个成员SPOP myset 1
SRANDMEMBERSRANDMEMBER key [count]随机返回集合中的一个或多个成员,但不移除SRANDMEMBER myset 2
SREMSREM key member [member …]移除集合中的一个或多个成员SREM myset "apple" "banana"
SUNIONSUNION key [key …]返回所有集合的并集SUNION myset1 myset2
SUNIONSTORESUNIONSTORE destination key [key …]将并集结果存储在指定的集合中SUNIONSTORE resultset myset1 myset2

示例如下:

存储值:sadd key member [member ...]

# 只存了2个
127.0.0.1:6379> sadd ma nong ma nong
(integer) 2

获取所有元素语法smembers key

127.0.0.1:6379> smembers ma
1) "nong"
2) "ma"

部分截图如下:

在这里插入图片描述

随机获取srandmember langs count

127.0.0.1:6379> srandmember ma 1
1) "nong"

判断集合是否存在元素sismember key member

127.0.0.1:6379> sismember ma ma
(integer) 1

截图如下:

在这里插入图片描述

获取集合元素个数scard key

127.0.0.1:6379> scard ma
(integer) 2

删除集合元素srem key member [member ...]

127.0.0.1:6379> srem ma ma
(integer) 1

在这里插入图片描述

弹出元素:spop key [count]

127.0.0.1:6379> spop ma 1
1) "nong"

5. hash哈希

键值对集合,特别适合用于存储对象类型
常用命令:

  • hset key field value 给key集合中的filed键赋值value
  • hget key1 field 集合field取出value
  • hmset key1 field1 value1 field2 value2 批量设置hash的值
  • hexists key1 field 查看哈希表key中,给定域field是否存在
  • hkeys key 列出该hash集合的所有field
  • hvals key 列出该hash集合的所有value
  • hincrby key field increment 为哈希表key中的域field的值加上增量1 -1
  • hsetnx key field value 将哈希表key中的域field的值设置为value,当且仅当域field不存在

例如 hset user:1000 id 1

6. Zset有序集合

没有重复元素的字符串集合,按照相关的分数进行排名,排名从低到高,排名可重复

有序集合 zset 与普通集合 set 非常相似,是一个没有重复元素的字符串集合

常用命令:

  • zadd key score1 value1 score2 value2 将一个或多个member元素及其score值加入到有序key中
  • zrange key start stop (withscores) 返回有序集key,下标在start与stop之间的元素,带withscores,可以让分数一起和值返回到结果集。
  • zrangebyscore key min max(withscores) 返回有序集key,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score的值递增次序排列
  • zrevrangebyscore key max min (withscores)同上,改为从大到小排列
  • zincrby key increment value 为元素的score加上增量
  • zrem key value 删除该集合下,指定值的元素
  • zcount key min max 统计该集合,分数区间内的元素个数
  • zrank key value 返回该值在集合中的排名,从0开始
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值