Redis常用的命令

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis常用的命令

文章目录

redis数据结构常用的命令

key(键)

del

keys

RANDOMKEY

TTL

EXISTS

MOVE

RENAME

TYPE

EXPIRE

String(字符串)

SET

`SETNX`

SETEX

MSET

MSETNX

APPEND

GET

MGET

GETSET

STRLEN

DECR

DECRBY

INCR INCRBY

Hash(哈希表)

HSET

HSETNX

HMSET 与HMGET

HGETALL

HDEL

HLEN

HEXISTS

HKEYS

HVALS

List(列表)

LPUSH

LPUSHX

RPUSH

LPOP

RPOP

Set(集合)

SADD

SREM

SMEMBERS

SortedSet(有序集合)

ZADD

redis数据结构常用的命令

key(键)

del

格式:DEL key [key …]

删y删除一个key或者多个key

127.0.0.1:6379> del k1

(integer) 1

keys

格式:keys pattern

查找所有符合给定模式 pattern 的 key 。

还可以指定正则表达式。

127.0.0.1:6379> keys *

1) "key1"

2) "\xac\xed\x00\x05t\x00\x04name"

3) "k2"

4) "\xac\xed\x00\x05t\x00\x03age"

5) "\xac\xed\x00\x05t\x00\aaddress"

RANDOMKEY

格式:randomkey

从当前数据库中随机返回(不删除)一个 key 。

127.0.0.1:6379> randomkey

"\xac\xed\x00\x05t\x00\x03age"

TTL

格式:ttl key

以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

返回值:

当 key 不存在时,返回 -2 。

当 key 存在但没有设置剩余生存时间时,返回 -1 。

否则,以秒为单位,返回 key 的剩余生存时间。

127.0.0.1:6379> set k3 2

OK

127.0.0.1:6379> ttl k2

(integer) -1

127.0.0.1:6379> ttl k3

(integer) -1

127.0.0.1:6379> del k3

(integer) 1

127.0.0.1:6379> set k3 10

OK

127.0.0.1:6379> ttl k3

(integer) -1

127.0.0.1:6379> expire k3 5

(integer) 1

127.0.0.1:6379> ttl k3

(integer) 2

127.0.0.1:6379> ttl k3

(integer) -2

127.0.0.1:6379>  

EXISTS

格式:exists key

检查给定 key 是否存在。

127.0.0.1:6379> exists k3

(integer) 0

127.0.0.1:6379> exists k2

(integer) 1

MOVE

格式:move key db

将当前数据库的 key 移动到给定的数据库 db 当中。

127.0.0.1:6379> move k1 1

(integer) 1

127.0.0.1:6379> select 1

OK

127.0.0.1:6379[1]> keys *

1) "k1"

RENAME

格式:rename key newkey

将 key 改名为 newkey 。

当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。

当 newkey 已经存在时, RENAME 命令将覆盖旧值。

127.0.0.1:6379[1]> set name elite

OK

127.0.0.1:6379[1]> keys *

1) "k1"

2) "name"

127.0.0.1:6379[1]> rename name name1

OK

127.0.0.1:6379[1]> keys *

1) "k1"

2) "name1"

TYPE

格式:type key

返回 key 所储存的值的类型

127.0.0.1:6379[1]> type name1

string

EXPIRE

格式:expire key seconds

为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。在 Redis 中,带有生存时间的 key 被称为『可挥发』(volatile)的。

String(字符串)

SET

格式:set key value

将字符串值 value 关联到 key 。

如果 key 已经持有其他值, SET 就覆写旧值,无视类型。

127.0.0.1:6379> set name elite

OK

127.0.0.1:6379> set name elite1

OK

127.0.0.1:6379> get name

"elite1"

SETNX

这个命令很重要,在分布式锁中会用到。

格式:setnx key value

将 key 的值设为 value ,当且仅当 key 不存在。

若给定的 key 已经存在,则 SETNX 不做任何动作。

SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。

127.0.0.1:6379> setnx name elite

(integer) 0

127.0.0.1:6379> setnx name1 elite1

(integer) 1

127.0.0.1:6379> setnx name1 elite2

(integer) 0

SETEX

格式:setex key seconds value

将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。

如果 key 已经存在, SETEX 命令将覆写旧值。

127.0.0.1:6379> setex name2 10 elite2

OK

127.0.0.1:6379> TTL name2

(integer) 9

127.0.0.1:6379> TTL name2

(integer) 7

127.0.0.1:6379> TTL name2

(integer) 6

MSET

格式:mset key value [key value …]

同时设置一个或多个 key-value 对。

127.0.0.1:6379> mset k1 v1 k2 v2

OK

127.0.0.1:6379> keys *

1) "k1"

2) "k2"

MSETNX

格式:msetnx key value [key value …]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

即使只有一个给定 key 已存在, MSETNX 也会拒绝执行所有给定 key 的设置操作。

MSETNX 是原子性的,因此它可以用作设置多个不同 key 表示不同字段(field)的唯一性逻辑对象(unique logic object),所有字段要么全被设置,要么全不被设置。

127.0.0.1:6379> msetnx k1 v1 k2 v2

(integer) 0

127.0.0.1:6379> msetnx k3 v3 k4 v4

(integer) 1

APPEND

格式:append key value

如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

127.0.0.1:6379> append k5 v5

(integer) 2

127.0.0.1:6379> append k4 append

(integer) 8

127.0.0.1:6379> get k4

"v4append"

GET

格式:get key

返回 key 所关联的字符串值。

如果 key 不存在那么返回特殊值 nil 。

假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。

MGET

格式:mget key [key …]

返回所有(一个或多个)给定 key 的值。

如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。

GETSET

格式:getset key value

将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

当 key 存在但不是字符串类型时,返回一个错误。

127.0.0.1:6379> set k1 v1

OK

127.0.0.1:6379> getset k1 v11

"v1"

STRLEN

格式:strlen key

返回 key 所储存的字符串值的长度。

当 key 储存的不是字符串值时,返回一个错误。

127.0.0.1:6379> getset k1 v11

"v1"

127.0.0.1:6379> strlen k1

(integer) 3

127.0.0.1:6379> set k2 112122asadws

OK

127.0.0.1:6379> strlen k2

(integer) 12

DECR

格式:decr key

将 key 中储存的数字值减一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

127.0.0.1:6379> set count 1

OK

127.0.0.1:6379> decr count

(integer) 0

127.0.0.1:6379> decr count

(integer) -1

127.0.0.1:6379> decr count

(integer) -2

DECRBY

格式:decrby key decrement

将 key 所储存的值减去减量 decrement 。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

INCR INCRBY

格式:incr key

格式:incrby key increment

将 key 中储存的数字值增一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

127.0.0.1:6379> set count 0

OK

127.0.0.1:6379> incr count

(integer) 1

127.0.0.1:6379> incr count

(integer) 2

127.0.0.1:6379> incr count

(integer) 3

127.0.0.1:6379> incrby count 3

(integer) 6

Hash(哈希表)

HSET

格式:hset key field value

将哈希表 key 中的域 field 的值设为 value 。

如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。

如果域 field 已经存在于哈希表中,旧值将被覆盖。

127.0.0.1:6379> hset map name elite

(integer) 1

127.0.0.1:6379> keys *

1) "map"

2) "count"

127.0.0.1:6379> hset map age 12

(integer) 1

HSETNX

格式:hsetnx key field value

将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。

若域 field 已经存在,该操作无效。

如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

127.0.0.1:6379> hsetnx map name elite1

(integer) 0

127.0.0.1:6379> hsetnx map name1 elite1

(integer) 1

HMSET 与HMGET

格式:hmset key field value [field value …]

同时将多个 field-value (域-值)对设置到哈希表 key 中。

此命令会覆盖哈希表中已存在的域。

如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。

127.0.0.1:6379> hmset person name elite age 12 address xxpro

OK

127.0.0.1:6379> hmget person name age address

1) "elite"

2) "12"

3) "xxpro"

HGETALL

格式:hgetall key

返回哈希表 key 中,所有的域和值。

在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

127.0.0.1:6379> HGETALL person

1) "name"

2) "elite"

3) "age"

4) "12"

5) "address"

6) "xxpro"

HDEL

格式:hdel key field [field …]

删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。

127.0.0.1:6379> hdel person name age

(integer) 2

HLEN

格式:hlen key

返回哈希表 key 中域的数量。

127.0.0.1:6379> hmset person name elite age 12 address xxpro

OK

127.0.0.1:6379> hlen person

(integer) 3

HEXISTS

格式:hexists key field

查看哈希表 key 中,给定域 field 是否存在。

127.0.0.1:6379> hmset person name elite age 12 address xxpro

OK

127.0.0.1:6379> hexists person name

(integer) 1

127.0.0.1:6379> hexists person job

(integer) 0

HKEYS

格式:hkeys key

返回哈希表 key 中的所有域。

127.0.0.1:6379> hkeys person

1) "name"

2) "age"

3) "address"

HVALS

格式:hvals key

返回哈希表 key 中所有域的值。

127.0.0.1:6379> hvals person

1) "elite"

2) "12"

3) "xxpro"

List(列表)

LPUSH

格式:lpush key value [value …]

将一个或多个值 value 插入到列表 key 的表头

127.0.0.1:6379> lpush subject chinese math english

(integer) 3

127.0.0.1:6379> lpush subject chinese

(integer) 4

LPUSHX

格式:lpushx key value

将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。

和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。

127.0.0.1:6379> lpushx subject geog

(integer) 5

127.0.0.1:6379> lpushx mylist 12

(integer) 0

RPUSH

格式:rpush key value [value …]

将一个或多个值 value 插入到列表 key 的表尾(最右边)。

127.0.0.1:6379> rpush mylist a b c d

(integer) 4

LPOP

格式:lpop key

移除并返回列表 key 的头元素。

127.0.0.1:6379> rpush mylist a b c d

(integer) 4

127.0.0.1:6379> lpop mylist

"a"

RPOP

格式:rpop key

移除并返回列表 key 的尾元素。

127.0.0.1:6379> rpush mylist a b c d

(integer) 4

127.0.0.1:6379> rpop mylist

"d"

Set(集合)

SADD

格式:sadd key member [member …]

将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将

被忽略。

假如 key 不存在,则创建一个只包含 member 元素作成员的集合。

当 key 不是集合类型时,返回一个错误。

127.0.0.1:6379> sadd set a b c

(integer) 3

SREM

格式:srem key member [member …]

移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。

当 key 不是集合类型,返回一个错误。

127.0.0.1:6379> sadd set a b c

(integer) 3

127.0.0.1:6379> srem set d

(integer) 0

127.0.0.1:6379> srem set a

(integer) 1

SMEMBERS

格式:smembers key

返回集合 key 中的所有成员。

不存在的 key 被视为空集合。

127.0.0.1:6379> sadd set a b c

(integer) 1

127.0.0.1:6379> smembers set

1) "a"

2) "c"

3) "b"

其他的操作命令这里不在继续。。。


SortedSet(有序集合)

ZADD

格式:zadd key score member [[score member] [score member] …]

将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过

重新插入这个 member 元素,来保证该 member 在正确的位置上。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
NoSQL Java Redis
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
这篇文章介绍了Redis的基本命令,并展示了如何使用Netty框架直接与Redis服务器进行通信,包括设置Netty客户端、编写处理程序以及初始化Channel的完整示例代码。
60 1
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
|
1月前
|
存储 NoSQL Java
Redis命令:列表模糊删除详解
通过本文的介绍,我们详细探讨了如何在Redis中实现列表的模糊删除。虽然Redis没有直接提供模糊删除命令,但可以通过组合使用 `LRANGE`和 `LREM`命令,并在客户端代码中进行模糊匹配,来实现这一功能。希望本文能帮助你在实际应用中更有效地操作Redis列表。
39 0
|
2月前
|
缓存 NoSQL 测试技术
Redis如何解决频繁的命令往返造成的性能瓶颈!
Redis如何解决频繁的命令往返造成的性能瓶颈!
|
2月前
|
缓存 NoSQL Redis
Redis命令:列表模糊删除详解
Redis命令:列表模糊删除详解
70 3
|
2月前
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
318 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
2月前
|
NoSQL Redis 数据安全/隐私保护
Redis 命令
10月更文挑战第15天
31 0
|
3月前
|
监控 NoSQL Redis
redis-server --service-install redis.windows.conf --loglevel verbose 命令的作用是什么?
redis-server --service-install redis.windows.conf --loglevel verbose 命令的作用是什么?
135 3
|
3月前
|
存储 缓存 NoSQL
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
78 0
|
4月前
|
存储 消息中间件 NoSQL
Redis命令详解以及存储原理
Redis命令详解以及存储原理
|
5月前
|
存储 缓存 NoSQL
Redis 全局通用命令整理
Redis 全局通用命令整理
70 10