【Redis】redis通用命令

本文详细介绍了如何在Redis服务上使用客户端执行命令,包括本地和远程连接,以及基本的命令如AUTH、PING、SELECT和数据库管理。此外,文章还覆盖了Redis密码设置的方法以及服务器端的命令和操作,包括密码配置、key操作、状态查询等。
摘要由CSDN通过智能技术生成

redis连接命令(客户端)

要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前安装redis 的src目录下,具体为/usr/local/redis/src。注意此redis实例没有设置密码,如果设置了密码需要先使用命令AUTH执行验证或者开始在命令行中通过-a指定。

本地连接

[root@k8s-m2 src]# cd /usr/local/redis/src
[root@k8s-m2 src]# pwd
/usr/local/redis/src
[root@k8s-m2 src]# ./redis-cli 
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

在以上实例中我们连接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。

远程连接
如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。如下:

[root@k8s-m2 src]# ./redis-cli -h 127.0.0.1 -p 6379 
127.0.0.1:6379> PING
PONG

redis 连接的基本命令

下表列出了 redis 连接的基本命令:

命令说明
AUTH password验证密码是否正确
ECHO message打印字符串
PING查看服务是否运行
QUIT关闭当前连接
SELECT index切换到指定的数据库,默认为0

redis密码设置

简单说一下redis中密码的设置,方法有两种:

  • 方法一:通过命令设置密码(缺点就是临时生效,重启服务器后密码会失效),通过redis-cli连接后使用如下命令:
#设置密码
127.0.0.1:6379> CONFIG set requirepass 123456
OK
#将设置的密码写入到配置文件中,不需要手动再去修改配置文件
127.0.0.1:6379> CONFIG REWRITE
OK

执行完毕,无需重启,退出客户端,重新登录就需要输入密码了 。

注意:通过此方法设置的密码后如果想取消密码,需要将如下的字符串修改成nopass,并注销requirepass这一行,如下:
在这里插入图片描述

  • 方法二:通过配置文件redis.conf设置密码(永久生效)
    修改redis.conf中requirepass这行,后面跟的就是密码,默认是注释掉的,即不需要密码。将该行#号删除后设置自己想要的密码,并重启redis服务即可。
    可以通过如下命令查看设置的密码:
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "123456"
127.0.0.1:6379> 

实际使用中,生成环境可能之前没有设置密码,但是现在需要设置但是又不能立马重启redis服务,为防止重启服务器后密码失效,可以通过方法一 设置密码,并通过CONFIG REWRITE 将密码写入到配置文件中。

Redis服务端

Redis 服务器命令主要是用于管理 redis 服务。下表列出了 redis 服务器的相关命令:

命令说明
BGREWRITEAOF异步执行一个 AOF(AppendOnly File) 文件重写操作
BGSAVE在后台异步保存当前数据库的数据到磁盘
CLIENT KILL [ip:port] [ID client-id]关闭客户端连接
CLIENT LIST获取连接到服务器的客户端连接列表
CLIENT GETNAME获取连接的名称
CLIENT PAUSE timeout在指定时间内终止运行来自客户端的命令
CLIENT SETNAME connection-name设置当前连接的名称
CLUSTER SLOTS获取集群节点的映射数组
COMMAND获取 Redis 命令详情数组
COMMAND COUNT获取 Redis 命令总数
COMMAND GETKEYS获取给定命令的所有键
TIME返回当前服务器时间
COMMAND INFO command-name [command-name …]获取指定 Redis 命令描述的数组
CONFIG GET parameter获取指定配置参数的值
CONFIG REWRITE对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写
CONFIG SET parameter value修改 redis 配置参数,无需重启
CONFIG RESETSTAT重置 INFO 命令中的某些统计数据
DBSIZE返回当前数据库的 key 的数量
DEBUG OBJECT key获取 key 的调试信息
DEBUG SEGFAULT让 Redis 服务崩溃
FLUSHALL删除所有数据库的所有key
FLUSHDB删除当前数据库的所有key
INFO [section]获取 Redis 服务器的各种信息和统计数值
LASTSAVE返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
MONITOR实时打印出 Redis 服务器接收到的命令,调试用
ROLE返回主从实例所属的角色
SAVE同步保存数据到硬盘
SHUTDOWN [NOSAVE] [SAVE]异步保存数据到硬盘,并关闭服务器
SLAVEOF host port将当前服务器转变为指定服务器的从属服务器(slave server)
SLOWLOG subcommand [argument]管理 redis 的慢日志
SYNC用于复制功能(replication)的内部命令

通用命令

keys pattern

用于查找所有符合给定模式(pattern)的key

命令说明举例
keys *遍历所有 key
keys h[ae]*llo遍历以h开头,第二个字符为a-e之间的,以llo结尾的所有keyh[ae]llo matches hello and hallo, but not hillo
keys h?llo?代表一个字符,有且只有h?llo matches hello, hallo and hxllo
keys h*llo*代表0个或者多个字符h*llo matches hllo and heeeello
keys h[^e]llo^ 代表中间不是e的字符h[^e]llo matches hallo, hbllo, … but not hello
dbsize计算 key 的总数

注意:keys命令一般不在生产环境中使用

  • 由于生产环境中key的数量可能很多,而keys这个命令是一个O(n)的命令
  • 由于Redis是单线程的,这个命令的操作会阻塞其他操作
  • 可以在从节点上执行keys命令
  • 使用SCAN命令代替keys命令

示例,可以观察一下不同通配符的效果。

127.0.0.1:6379> 
127.0.0.1:6379> DBSIZE
(integer) 0
127.0.0.1:6379> MSET hello 1 hallo 2 hillo 3 hxllo 4 hllo 5 heeeello 6 hbllo 7 
OK
127.0.0.1:6379> DBSIZE
(integer) 7
127.0.0.1:6379> KEYS h[ae]*llo
1) "hello"
2) "hallo"
3) "heeeello"
127.0.0.1:6379> KEYS h?llo
1) "hello"
2) "hallo"
3) "hbllo"
4) "hxllo"
5) "hillo"
127.0.0.1:6379> KEYS h*llo
1) "hello"
2) "hallo"
3) "hbllo"
4) "heeeello"
5) "hllo"
6) "hxllo"
7) "hillo"
127.0.0.1:6379> KEYS h[^e]llo
1) "hallo"
2) "hbllo"
3) "hxllo"
4) "hillo"
127.0.0.1:6379>

exists key

用于检查给定的key是否存在。存在返回 1,不存在返回 0 。
示例,接上面的例子继续:

127.0.0.1:6379> EXISTS hello
(integer) 1
127.0.0.1:6379> EXISTS hello1
(integer) 0
127.0.0.1:6379>

del key1 [key2…]

用于 在 key 存在时删除 key。存在返回 1, 不存在返回 0 。
示例,接上面的例子继续:

127.0.0.1:6379> DEL hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> DEL hello
(integer) 0
127.0.0.1:6379> 

expire key second、ttl key、persist key

命令说明
expire key second为给定 key 设置过期时间,单位为秒,到期后key就不存在了。默认设置的key无过期时间
ttl key以秒为单位,返回给定key的剩余生存时间(TTL , time to live)。不存在 key 返回 -2 ,无过期时间的 key 返回-1
persist key移除 key 的过期时间,key 将持久保存

示例,接上面的例子继续:

127.0.0.1:6379> EXPIRE hallo 10
(integer) 1
127.0.0.1:6379> ttl hallo
(integer) 8
127.0.0.1:6379> ttl hallo
(integer) 2
127.0.0.1:6379> ttl hallo
(integer) -2
127.0.0.1:6379> get hallo
(nil)

127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> ttl hello
(integer) -1
127.0.0.1:6379> expire  hello 30
(integer) 1
127.0.0.1:6379> ttl hello 
(integer) 26
127.0.0.1:6379> PERSIST hello
(integer) 1
127.0.0.1:6379> ttl hello 
(integer) -1
127.0.0.1:6379> 

type

用于返回 key 所存储的值的类型,不存在的 key 返回none
示例,接上面的例子继续:

127.0.0.1:6379> TYPE hello
string
127.0.0.1:6379> SADD set1 1 2 3
(integer) 3
127.0.0.1:6379> TYPE set1
set
127.0.0.1:6379> TYPE set2
none
127.0.0.1:6379> 

flushdb、flushall

用于删除key

命令含义
flushdb删除当前数据库中的所有 key
flushall删除所有数据库中的 key

更多关于keys的命令

命令说明
DUMP key序列化给定 key ,并返回被序列化的值。
MOVE key db将当前数据库的 key 移动到给定的数据库 db 当中。
PTTL key以毫秒为单位返回 key 的剩余的过期时间。
RANDOMKEY从当前数据库中随机返回一个 key 。
RENAME key newkey修改 key 的名称
RENAMENX key newkey仅当 newkey 不存在时,将 key 改名为 newkey 。
SCAN cursor [MATCH pattern] [COUNT count]迭代数据库中的数据库键。
select database_number切换当前使用的数据库,默认使用0

查看当前使用redis的信息

INFO命令,可以全局查看当前redis的相关信息,主要包括Server、Clients、Memory、Persistence、Stats、Replication、CPU、Modules、Cluster、Keyspace。大家可以自行查看一下各模块下面包括的信息。
可以使用 INFO 模块名 具体查看某个模块的信息,如下,查看当前使用的数据库信息(包括可以当前使用的db,key数量等):

127.0.0.1:6379> DBSIZE 
(integer) 6
127.0.0.1:6379> MOVE hello 1
(integer) 1
127.0.0.1:6379> INFO keyspace
# Keyspace
db0:keys=5,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0

上面的示例是将0 号数据库中hello这个key移到1 号数据库,然后通过INFO查看到相关信息。

更多关于redis的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

margu_168

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

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

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

打赏作者

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

抵扣说明:

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

余额充值