Redis 常用命令

Redis 常用命令

转载:Redis 键(key) | 菜鸟教程 (runoob.com)

键操作

命令 描述
SET key value 将字符串值存储在指定的键中。如果键已经存在,则覆盖旧值。
GET key 获取指定键的值。
DEL key 删除指定的键。如果键不存在,忽略操作。
EXISTS key 检查指定的键是否存在,返回 1 表示存在,0 表示不存在。
EXPIRE key seconds 为键设置生存时间(TTL,单位为秒)。到期后,键将被自动删除。
EXPIREAT key timestamp 类似于 EXPIRE,但接受 UNIX 时间戳作为参数。键将在指定的时间戳时过期。
PEXPIRE key milliseconds 为指定的键设置过期时间(单位为毫秒)。在指定的时间后,键将被自动删除。
PEXPIREAT key milliseconds-timestamp 类似于 PEXPIRE,但接受 UNIX 时间戳(以毫秒为单位)作为参数。键将在指定的时间戳时过期。
TTL key 查看键的剩余生存时间(单位为秒)。如果没有设置过期时间,返回 -1;如果键不存在,返回 -2。
PTTL key 返回指定键的剩余过期时间(单位为毫秒)。如果键没有设置过期时间,返回 -1;如果键不存在,返回 -2。
KEYS pattern 查找匹配给定模式的所有键。pattern 可以包含通配符(例如 * 匹配任意多个字符,? 匹配单个字符)。
RENAME key newkey 重命名指定的键。如果 newkey 已经存在,将被覆盖。
RENAMENX key newkey 仅当 newkey 不存在时,将 key 重命名为 newkey。如果 newkey 已存在,操作不会进行。
TYPE key 返回键所存储的值的类型。可能的返回值有 string, list, set, zset, hash, none 等。
DUMP key 序列化指定的键,并返回序列化的值。可以用来持久化键的值。序列化后的数据是二进制安全的。
RANDOMKEY 随机返回当前数据库中的一个键。如果数据库为空,返回 nil
MOVE key db 将指定的键移动到另一个数据库中。
PERSIST key 移除键的过期时间,使其变为永久存储。
SCAN cursor [MATCH pattern] [COUNT count] 迭代数据库中的键。cursor 是游标,用于跟踪迭代的位置。MATCH pattern 可以用来匹配键名,COUNT count 可以用来控制每次迭代返回的键的数量。
--以`0`为初始游标查询通配`my开头`的所有key,最大返回10,`2`为下一次的有标位置
127.0.0.1:6379> scan 0 match my* count 10
1) "2"
2) 1) "mykey"
   2) "mykey3"
   3) "mykey7"
   4) "mykey2"
127.0.0.1:6379> scan 2 match my* count 10
1) "62"
2) 1) "mykey9"
   2) "mykey4"
   3) "mykey8"
   4) "mykey5"
127.0.0.1:6379> scan 62 match my* count 10
1) "43"
2) 1) "mykey10"
   2) "mykey6"
   3) "mykey1"
127.0.0.1:6379> scan 43 match my* count 10
1) "0"
2) (empty array)

String 类型数据

命令 描述
SET key value 设置指定 key 的值。如果 key 已经存在,它会覆盖原有的值。
SETNX key value 只有在 key 不存在时设置 key 的值。如果 key 已经存在,则不做任何操作。
SETEX key seconds value key 的值设置为 value,并在指定的 seconds 后过期。
PSETEX key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
MSET key1 value1 [key2 value2 ...] 同时设置多个键值对。如果任何 key 已经存在,则所有操作都不会执行。
MSETNX key1 value1 [key2 value2 ...] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
SETRANGE key offset value value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
APPEND key value value 追加到 key 对应的值的末尾。如果 key 不存在,它会被初始化为一个空字符串,然后再进行追加操作。
GET key 获取指定 key 的值。如果 key 不存在,返回 nil
GETRANGE key start end 返回 key 中字符串值的子字符。
STRLEN key 返回 key 所储存的字符串值的长度。
GETSET key value key 的值设置为 value,并返回 key 的旧值。
MGET key1 [key2 ...] 获取所有(一个或多个)给定 key 的值。如果某个 key 不存在,则对应的返回值是 nil
DEL key 删除指定的 key。如果 key 存在,删除它并返回 1;如果 key 不存在,返回 0
EXISTS key 检查 key 是否存在。如果存在,返回 1;否则返回 0
SETBIT key offset value key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
GETBIT key offset key 所储存的字符串值,获取指定偏移量上的位(bit)。
INCR key key 中储存的整数值加一。如果 key 不存在,它会被初始化为 0,然后加一。
DECR key key 中储存的整数值减一。如果 key 不存在,它会被初始化为 0,然后减一。
INCRBY key increment key 所储存的值加上给定的增量值(increment)。
DECRBY key decrement key 所储存的值减去给定的减量值(decrement)。
NCRBYFLOAT key increment key 所储存的值加上给定的浮点增量值(increment)。
--在增量时要注意有小数的要使用 `hincrbyfloat`命令(或者数字增量浮点型后再增量时)
127.0.0.1:6379> incr a
(integer) 1
127.0.0.1:6379> get a
"1"
127.0.0.1:6379> incr a 10
(error) ERR wrong number of arguments for 'incr' command
127.0.0.1:6379> incrby a 10
(integer) 11
127.0.0.1:6379> incrbyfloat a 0.5
"11.5"
127.0.0.1:6379> 
127.0.0.1:6379> incrby a 10
(error) ERR value is not an integer or out of range
127.0.0.1:6379> 

Hash 数据类型

命令 描述
HDEL key field1 [field2] 删除一个或多个哈希表字段
HEXISTS key field 查看哈希表 key 中,指定的字段是否存在
HGET key field 获取存储在哈希表中指定字段的值
HGETALL key 获取在哈希表中指定 key 的所有字段和值
HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment
HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment
HKEYS key 获取哈希表中的所有字段
HLEN key 获取哈希表中字段的数量
HMGET key field1 [field2] 获取所有给定字段的值
HMSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中
HSET key field value 将哈希表 key 中的字段 field 的值设为 value
HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值
HVALS key 获取哈希表中所有值
HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对
127.0.0.1:6379> hscan student:1000 0 match * count 10
1) "0"
2) 1) "name"
   2) "lisi"
   3) "score"
   4) "90.5"

127.0.0.1:6379> hscan student:1000 0 
1) "0"
2) 1) "name"
   2) "lisi"
   3) "score"
   4) "90.5"

List 数据类型

命令 描述
LPUSH key value1 [value2 ...] 将一个或多个值插入到列表头部。
LPUSHX key value 将一个值插入到已存在的列表头部(如果列表不存在则不执行任何操作)。
RPUSH key value1 [value2 ...] 在列表中添加一个或多个值到列表尾部。
RPUSHX key value 为已存在的列表添加值(如果列表不存在则不执行任何操作)。
LSET key index value 通过索引设置列表中的元素值。
`LINSERT key BEFORE AFTER pivot value`
LLEN key 获取列表的长度(元素个数)。
LRANGE key start stop 获取列表中指定范围内的元素。
LINDEX key index 通过索引获取列表中的元素。
LREM key count value 根据参数 count 移除列表中与 value 相等的元素。
LTRIM key start stop 对列表进行修剪,只保留指定区间内的元素,其他元素将被删除。
LPOP key 移出并获取列表的第一个元素。
BLPOP key1 [key2 ...] timeout 移出并获取列表的第一个元素,阻塞等待直到超时或有元素可弹出。
RPOP key 移除并获取列表的最后一个元素。
BRPOP key1 [key2 ...] timeout 移出并获取列表的最后一个元素,阻塞等待直到超时或有元素可弹出。
RPOPLPUSH source destination 移出列表的最后一个元素,并将该元素添加到另一个列表(头部)。
BRPOPLPUSH source destination timeout 从列表弹出一个元素并插入到另一个列表,支持阻塞操作。

使用阻塞BRPOP模拟消息队列(左进右出 或者 右进左出

--生产者 发送消息
127.0.0.1:6379> LPUSH myqueue "message1" "message2" "message3"
(integer) 3

--消费者 消费信息 超时时间`0`表示一直等待
127.0.0.1:6379> BRPOP myqueue 0
1) "myqueue"
2) "message3"
(4.07s)
127.0.0.1:6379> BRPOP myqueue 0
1) "myqueue"
2) "message2"
127.0.0.1:6379> BRPOP myqueue 0
1) "myqueue"
2) "message1"
127.0.0.1:6379> BRPOP myqueue 0

Set 数据类型

命令 描述
SADD key member1 [member2] 向集合添加一个或多个成员
SCARD key 获取集合的成员数
SISMEMBER key member 判断 member 元素是否是集合 key 的成员
SMEMBERS key 返回集合中的所有成员
SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合
SREM key member1 [member2] 移除集合中一个或多个成员
SPOP key 移除并返回集合中的一个随机元素
SRANDMEMBER key [count] 返回集合中一个或多个随机数
SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素
SINTER key1 [key2] 返回给定所有集合的交集
SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中
SUNION key1 [key2] 返回所有给定集合的并集
SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中
SDIFF key1 [key2] 返回第一个集合与其他集合之间的差集
SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中
127.0.0.1:6379> sadd mset1 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> sadd mset2 2 4 6 8 10 
(integer) 5
127.0.0.1:6379> sunion mset1 mset2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "8"
8) "10"
127.0.0.1:6379> sunionstore mset mset1 mset2
(integer) 8
127.0.0.1:6379> smembers mset
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "8"
8) "10"
127.0.0.1:6379> 

Sorted Set 数据类型

命令 描述
ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD key 获取有序集合的成员数
ZCOUNT key min max 计算在有序集合中指定区间分数的成员数
ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量
ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合指定区间内的成员
ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员
ZRANK key member 返回有序集合中指定成员的索引
ZREM key member [member ...] 移除有序集合中的一个或多个成员
ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员
ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到低
ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序
ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZSCORE key member 返回有序集中,成员的分数值
ZUNIONSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储在新的 key 中
ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)
ZINTERSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination 中

Redis 发布订阅命令

命令 描述
PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。
PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。
PUBLISH channel message 将信息发送到指定的频道。
PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。
SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。
UNSUBSCRIBE [channel [channel ...]] 退订给定的频道。

Redis 事务命令

命令 描述
DISCARD 取消事务,放弃执行事务块内的所有命令。
EXEC 执行所有事务块内的命令。
MULTI 标记一个事务块的开始。
UNWATCH 取消 WATCH 命令对所有 key 的监视。
WATCH key [key ...] 监视一个(或多个) key,如果在事务执行之前这个(或这些) key 被其他命令所改动,事务将被打断。

Redis 脚本命令

单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

命令 描述
EVAL script numkeys key [key ...] arg [arg ...] 直接执行 Lua 脚本。
EVALSHA sha1 numkeys key [key ...] arg [arg ...] 执行已被加载到 Redis 脚本缓存中的 Lua 脚本。
SCRIPT EXISTS script [script ...] 查看指定的脚本是否已经被保存在缓存当中。
SCRIPT FLUSH 从脚本缓存中移除所有脚本。
SCRIPT KILL 杀死当前正在运行的 Lua 脚本。
SCRIPT LOAD script 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。

Redis GEO 命令基本用法

命令 描述
GEOADD key longitude latitude member [longitude latitude member ...] 将地理位置(经度、纬度)与成员关联,添加到指定的键中。
GEOPOS key member [member ...] 获取指定成员的经纬度。
GEODIST key member1 member2 [unit] 计算两个成员之间的距离,可指定单位(m, km, mi, ft)。
GEORADIUS key longitude latitude radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASCDESC] 获取位于给定地理范围内的所有成员。
GEORADIUSBYMEMBER key member radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASCDESC] 获取位于某个成员指定范围内的其他成员。
GEOHASH key member [member ...] 返回一个或多个成员的 Geohash 表示。

Redis Stream 命令基本用法

命令 描述
XADD key ID field value [field value ...] 向流添加一个条目,ID 可以是 * 由 Redis 自动生成。
XLEN key 获取流中条目的数量。
XRANGE key start end [COUNT count] 返回指定范围内的条目,按 ID 递增顺序。
XREVRANGE key end start [COUNT count] 返回指定范围内的条目,按 ID 递减顺序。
XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] 读取流中新添加的条目,可以阻塞等待。
XGROUP CREATE key groupname id 创建一个消费组。
XREADGROUP GROUP groupname consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] 从流中读取消费组未处理的消息。
XACK key groupname ID [ID ...] 确认消息已处理。
XDEL key ID [ID ...] 删除流中的消息。
XPENDING key groupname [start end count] [consumer] 查看未确认的消息。
posted @ 2024-09-17 15:06  疾风不问归途  阅读(86)  评论(0)    收藏  举报