Redis的基础命令

发布于:2025-08-14 ⋅ 阅读:(11) ⋅ 点赞:(0)

在前面我们讲了redis的搭建和启动,这里直接开始将他的基础命令

一、连接命令

1.ping:用于测试与服务器的连接是否仍然生效,如果连接正常就返回一个PONG 否则返回一个连接错误。

127.0.0.1:6379> ping
PONG

2.echo :用于打印特定信息

127.0.0.1:6379> echo 'hello world'
"hello world"

3.select i:切换到指定的数据库,数据库索引号 i 用数字值指定,以 0 作为起始索引值。默认使用 0号数据库。

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> 

这里要注意,你在0库里面设置的键,只能在0库里面使用,在1库里面不生效。可以采用命令给它移过去,下文会讲到。

4.auth pword:开启了密码保护,在每次连接 Redis 服务器之后,就要使用auth命令解锁,解锁之后才能使用其他 Redis 命令。密码匹配时返回 OK ,否则返回一个错误。

设置密码

127.0.0.1:6379> config set requirepass 123.com
OK   #requirepass的值123.com就是密码
127.0.0.1:6379> quit

下次登录时

[root@localhost redis]# ./src/redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.  #是 Redis 提示需要身份验证才能执行命令的错误信息。
127.0.0.1:6379> auth 123.com   #直接使用auth后面加自己的密码即可登录成功
OK

清空密码

127.0.0.1:6379> config set requirepass “”
OK   #requirepass的值就是密码
127.0.0.1:6379> quit

5.quit:请求服务器关闭与当前客户端的连接。总是返回 OK (但是不会被打印显示,因为当时 Redis-cli 已经退出)。

127.0.0.1:6379[1]> quit
[root@localhost redis]# 

二、键命令

1.set key value:将字符串值 value关联到 key 。(当然这里的key 也可以是其他内容)

127.0.0.1:6379> set key1 1  #传入的都是字符串
OK

127.0.0.1:6379> set y11 1  #也可以不叫key
OK
127.0.0.1:6379> get y11
"1"

2.get key:返回 key所关联的字符串值。如果 key 不存在那么返回特殊值 nil 。

127.0.0.1:6379> get key1
"1"

3.del key1 key2 :删除给定的一个或多个 key 。没有的key忽略,返回被删除 key 的数量。

127.0.0.1:6379> del key1 y11
(integer) 2

4.mset key1 value1 key2 value2 批量设置key

127.0.0.1:6379> mset key1 1 key2 2 key3 3
OK

5.mget key1 key2 key3  批量查看key

127.0.0.1:6379> mget key1 key2 key3
1) "1"
2) "2"
3) "3"

6.exists key:检查 key 是否存在。

存在返回 1,不存在返回 0 。

127.0.0.1:6379> exists key3
(integer) 1

7.type key:返回 key 所储存的值的类型。none (key不存在)、string (字符串)、list (列表)、set (集合)、zset (有序集)、hash (哈希表)

127.0.0.1:6379> type key1
string

8.expire key seconds:以秒为单位,为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。

设置成功返回 1 。其他为0。

127.0.0.1:6379> expire key3 30
(integer) 1
127.0.0.1:6379> ttl key3  #查看有效时间
(integer) 24
127.0.0.1:6379> exists key3 #验证是否存在
(integer) 0

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

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

127.0.0.1:6379> set key1 helloworld
OK
127.0.0.1:6379> ttl key1
(integer) -1
127.0.0.1:6379> expire key1 50
(integer) 1
127.0.0.1:6379> ttl key1
(integer) 44
127.0.0.1:6379> ttl key1
(integer) -2

10.pexpire key mseconds,以毫秒为单位设置 key 的生存时间,

设置成功,返回 1。key不存在或设置失败,返回0

127.0.0.1:6379> set key1 abc
OK
127.0.0.1:6379> pexpire key1 10000
(integer) 1
127.0.0.1:6379> ttl key1
(integer) 5
127.0.0.1:6379> pttl key1
(integer) 746

11.pttl key:以毫秒为单位返回 key 的剩余生存时间,

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

127.0.0.1:6379> pttl key1
(integer) -2
127.0.0.1:6379> set key1 abc
OK
127.0.0.1:6379> pexpire key1 30000
(integer) 1
127.0.0.1:6379> pttl key1
(integer) 27345

12.keys pattern:查找所有符合给定模式 pattern 的 key 。符合给定模式的 key 列表。

通配符

* 表示多个字符
? 表示一个字符
[] 表示只能是[]里面的字符
\ 表示指定特殊字符
127.0.0.1:6379> mset zhangsan 1 zhangsi 2 zhangwu 3
OK
127.0.0.1:6379> keys *
1) "zhangwu"
2) "zhangsan"
3) "zhangsi"
127.0.0.1:6379> keys ng*
(empty list or set)
127.0.0.1:6379> keys *ng*
1) "zhangwu"
2) "zhangsan"
3) "zhangsi"
127.0.0.1:6379> keys zhang??
1) "zhangwu"
2) "zhangsi"
127.0.0.1:6379> keys zha[ng]si
(empty list or set)
127.0.0.1:6379> keys zhan[ng]si
1) "zhangsi"

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

移动成功返回 1 ,失败则返回 0 。

127.0.0.1:6379> keys *
1) "zhangwu"
2) "zhangsan"
3) "zhangsi"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> move zhangsan 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "zhangsan"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "zhangwu"
2) "zhangsi"

注意:

key不存在时,移动失败

key移动到1库时,1库中出现同名的key,移动失败

14.random key:从当前数据库中随机一个 key 。

当数据库不为空时,返回随机一个 key 。当数据库为空时,返回 nil 。

127.0.0.1:6379> randomkey
"zhangwu"
127.0.0.1:6379> randomkey
"key"
127.0.0.1:6379> randomkey
"key"
127.0.0.1:6379> randomkey
"zhangwu"

15.rename key newkey:将 key 改名为 newkey 。

改名成功时提示 OK ,失败时候返回一个错误。

127.0.0.1:6379> rename key key1
OK
127.0.0.1:6379> keys *
1) "key1"
2) "zhangwu"
3) "zhangsi"

注意:

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

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

rename key newkey:强制重命名(覆盖风险)

  • 功能:无条件将 key 改名为 newkey

    关键特性

  • 如果 newkey 已经存在,会直接覆盖原 newkey 的值(数据会丢失)。
  • 如果 key 不存在,或 key 与 newkey 同名,会返回错误。
  • 成功时返回 OK
  • 例如
    # 假设已存在 key1="a"、key2="b"
    127.0.0.1:6379> rename key1 key2  # key2 已存在,会被覆盖
    OK
    127.0.0.1:6379> get key2  # 原 key2 的值 "b" 已丢失,变为 key1 的值 "a"
    "a"

16.renamenx key newkey:当且仅当 newkey 不存在时,将 key 改名为 newkey 。修改成功时,返回 1 。如果 newkey 已经存在,返回 0 。

127.0.0.1:6379> renamenx zhangsi zhangwu
(integer) 0
127.0.0.1:6379> renamenx zhangsi zhangsan
(integer) 1
127.0.0.1:6379> keys *
1) "zhangsan"
2) "key1"
3) "zhangwu"

renamenx key newkey:安全重命名(不覆盖)

  • 功能:仅当 newkey 不存在时,才将 key 改名为 newkeynx 是 "not exists" 的缩写)。

  • 关键特性

    • 如果 newkey 已存在,不做任何操作,返回 0(表示失败)。
    • 如果 newkey 不存在,重命名成功,返回 1(表示成功)。
    • 避免了覆盖已有数据的风险,更安全。

    示例:

    # 假设已存在 key1="a"、key2="b"
    127.0.0.1:6379> renamenx key1 key2  # key2 已存在,不操作
    (integer) 0
    127.0.0.1:6379> get key2  # 仍为原 value "b"
    "b"

补充建立不同类型的key、

①. 哈希(Hash)

用于存储键值对集合(类似 JSON 对象),适合存储结构化数据(如用户信息)。
设置命令hset key field value(单个字段)、hmset key field1 value1 field2 value2...(批量字段,Redis 4.0 后推荐用 hset 替代)

# 设置哈希类型的键(用户信息)
127.0.0.1:6379>hset user:1 name "张三" age 25 city "北京"
(integer) 3  # 成功设置 3 个字段

这里创建了一个叫 user:1 的哈希键,包含 3 个字段:
name → 张三
age → 25
city → 北京

# 查看类型
127.0.0.1:6379> type user:1
hash

# 获取哈希中的字段值
127.0.0.1:6379> hget user:1 name
"zhangsan"

#获取所有哈希值
127.0.0.1:6379> hgetall user:1
1) "name"   # 第一个字段
2) "张三"   # 第一个字段的值
3) "age"    # 第二个字段
4) "25"     # 第二个字段的值
5) "city"   # 第三个字段
6) "北京"   # 第三个字段的值

#删除字段   语法:hdel 哈希键 字段1 字段2 ...
127.0.0.1:6379> hdel user:1 city
(integer) 1  # 表示成功删除1个字段

# 再次查看,city 字段已消失
127.0.0.1:6379> hgetall user:1
1) "name"
2) "张三"
3) "age"
4) "25"

②. 列表(List)

有序的字符串集合(可重复),支持从两端添加 / 删除元素,类似链表。
设置命令lpush key value1 value2...(从左侧添加)、rpush key value1 value2...(从右侧添加)

# 设置列表类型的键(存储用户 ID 列表)
127.0.0.1:6379> rpush user_ids 1001 1002 1003  # 从右侧添加元素
(integer) 3  # 列表长度

# 查看类型
127.0.0.1:6379> type user_ids
list

# 获取列表元素(索引 0 到 2)
127.0.0.1:6379> lrange user_ids 0 2
1) "1001"
2) "1002"
3) "1003"

#添加元素
# 往列表 "fruits" 右边添加元素
127.0.0.1:6379> rpush fruits "apple" "banana"
(integer) 2  # 列表现在有2个元素:["apple", "banana"]

# 往列表左边添加元素
127.0.0.1:6379> lpush fruits "orange"
(integer) 3  # 列表变成:["orange", "apple", "banana"]

#删除元素
# 删除左边第一个元素
127.0.0.1:6379> lpop fruits
"orange"  # 被删除的元素
127.0.0.1:6379> lrange fruits 0 -1
1) "apple"
2) "banana"  # 现在列表剩下这两个

# 删除右边最后一个元素
127.0.0.1:6379> rpop fruits
"banana"  # 被删除的元素
127.0.0.1:6379> lrange fruits 0 -1
1) "apple"  # 列表只剩这个

③. 集合(Set)

无序的字符串集合(不可重复),支持交集、并集等集合操作。
设置命令sadd key member1 member2...

# 设置集合类型的键(存储标签)
127.0.0.1:6379> sadd tags "redis" "python" "database"
(integer) 3  # 成功添加 3 个元素

# 查看类型
127.0.0.1:6379> type tags
set

# 查看集合所有元素
127.0.0.1:6379> smembers tags
1) "database"
2) "python"
3) "redis"

④. 有序集合(Sorted Set)

类似集合,但每个元素关联一个分数(score),可按分数排序(不重复)。
设置命令zadd key score1 member1 score2 member2...

# 设置有序集合类型的键(存储学生成绩,分数为成绩)
127.0.0.1:6379> zadd scores 90 "zhangsan" 85 "lisi" 95 "wangwu"
(integer) 3  # 成功添加 3 个元素

# 查看类型
127.0.0.1:6379> type scores
zset

# 按分数升序查看元素(0 表示从最低分开始,-1 表示到最高分结束)
127.0.0.1:6379> zrange scores 0 -1 withscores
1) "lisi"
2) "85"
3) "zhangsan"
4) "90"
5) "wangwu"
6) "95"

关键说明

  • 每个键只能属于一种数据类型,设置时通过命令自动关联(例如 hset 对应哈希,sadd 对应集合)。
  • 可通过 type key 命令查看某个键的类型。
  • 若对已存在的键使用其他类型的命令,会返回错误(例如对字符串键使用 hset)。

总结:这是一个简单的使用redis,有需要的可以自己再去网上找找相关内容,还有cue一嘴机械革命,我辛辛苦苦码了一天的笔记,还没保存呢,电脑直接关机????然后我的笔记消失了~蛙趣~当下一万匹尼马跑过去---,祝大家天天开心


网站公告

今日签到

点亮在社区的每一天
去签到