麦克斯仇
Think different
160
文章
47126
阅读
首页
INDEX
文章
ARTICLE
关于
ABOUT
Redis命令1:bin文件命令和一般常用命令
创建日期:
2021/05/10
修改日期:
2023/11/02
Linux
Redis
> 本文档整理自教程: Redis官方文档:[commands](https://redis.io/commands) 尚硅谷视频:[尚硅谷_Redis6](http://www.atguigu.com/download_detail.shtml?v=323) --- > 本文仅介绍常用命令,所有命令请参考官方文档 # `bin`文件命令 ## `redis-server`服务端 ```bash ./redis-server [/path/to/redis.conf] [options] [-] ``` - `[/path/to/redis.conf]`:指定配置文件 - `-v or --version`:查看服务端版本 > 例: - `./redis-server -v`:查看服务端版本 - `./redis-server`:以默认配置文件启动 - `./redis-server /etc/redis/6379.conf`:以指定配置文件启动 - `./redis-server --port 7777`:以指定配置项启动 - `./redis-server /etc/myredis.conf --loglevel verbose`:以指定配置项和配置文件启动 ## `redis-cli`客户端 ``` redis-cli [OPTIONS] [cmd [arg [arg ...]]] ``` - `-h <hostname>`:服务端地址(默认:127.0.0.1) - `-p <port>`:服务端端口(默认:6379) - `-a <password>`:连接到服务器时使用的密码(不推荐在命令行中使用) - `-n <db>`:数据库号序号 > 例: `redis-cli -h 127.0.0.1 -p 6379 -a 123 -n 0`:连接本地127.0.0.1:6379并指定密码为123且默认库为0号库 # 一般常用命令 ## Connection 连接相关 ### AUTH [username] password 认证 > 自1.0.0起可用。 在两种情况下,`AUTH`命令对当前连接进行身份验证: 1. 如果Redis服务器通过`requirepass`选项设置密码保护。 2. 如果`Redis 6.0`实例或更高版本正在使用`Redis ACL`系统。 Redis 6之前的Redis版本只能理解该命令的一个参数版本:`AUTH <password>`。该命令只根据`requirepass`设置的密码进行身份验证。Redis会拒绝刚刚连接的客户端执行的任何命令,除非连接通过`AUTH`进行验证。如果通过`AUTH`提供的密码与配置文件中的密码匹配,服务器将使用`OK`状态码进行应答,并开始接受命令。否则,将返回一个错误,客户端需要尝试新密码。 使用Redis ACL时,应当使用如下命令:`AUTH <username> <password>`。更多`ACL`相关略 > 例 ```bash [root@centos7 ~]# redis-cli 127.0.0.1:6379> AUTH 123 OK ``` ### PING [message] 网络诊断工具 > 自1.0.0起可用。 如果没有提供参数返回`PONG`,否则返回参数。此命令通常用于测试连接是否仍然活动,或测量延迟时间。 > 例 ```bash 127.0.0.1:6379> PING PONG 127.0.0.1:6379> PING hello "hello" ``` ### SELECT index 选择库 > 自1.0.0起可用。 选择具有指定数字索引的Redis库。默认情况选,Redis有16个库,索引从0开始。新连接始终使用数据库0。 > 例 ```bash 127.0.0.1:6379> SELECT 1 OK 127.0.0.1:6379[1]> SELECT 15 OK 127.0.0.1:6379[15]> SELECT 0 OK 127.0.0.1:6379> ``` ### QUIT 退出 > 自1.0.0起可用。 请求服务器关闭连接。一旦所有挂起的响应都写入客户端,连接就会立即关闭。 > 例 ```bash 127.0.0.1:6379> QUIT [root@centos7 ~]# ``` ### RESET > 自6.2起可用。 模拟断开连接并重新连接的效果。(重新连接后需要重新认证) > 例 ```bash [root@centos7 ~]# redis-cli 127.0.0.1:6379> AUTH 123 OK 127.0.0.1:6379> RESET RESET 127.0.0.1:6379> PING (error) NOAUTH Authentication required. 127.0.0.1:6379> AUTH 123 OK 127.0.0.1:6379> ``` ## Server 服务相关 ### DBSIZE 键数量 > 自1.0.0起可用。 返回当前所选数据库中的键数量 ```bash 127.0.0.1:6379> DBSIZE (integer) 3 ``` ### FLUSHDB [ASYNC|SYNC] 删除当前库所有键 | FLUSHALL [ASYNC|SYNC] 删除所有库所有键 > 自1.0.0起可用。 删除当前所选数据库的所有键。可以使用以下修饰符明确指示刷新模式: - ASYNC:异步刷新数据库(从Redis 6.2开始,`lazyfree-lazy-user-flush`配置为`yes`时,默认刷新模式更改为异步) - SYNC:同步刷新数据库(默认) 注意:`异步命令仅删除调用该命令时存在的键。在异步刷新期间创建的密钥将不受影响。 > 例 ```bash 127.0.0.1:6379> FLUSHDB OK 127.0.0.1:6379> DBSIZE (integer) 0 127.0.0.1:6379> FLUSHALL OK ``` ## Keys 键相关 ### KEYS pattern 查找键 > 自1.0.0起可用。 返回所有匹配`pattern`的键。支持通配符匹配: - `h?llo`:匹配hello、hallo和hxllo - `h*llo`:匹配hllo和heeeello - `h[ae]llo`:匹配hello、hallo,但不匹配hillo - `h[^e]llo`:匹配hallo、hbllo、……但不匹配hello - `h[a-b]llo`:匹配hallo和hbllo - 如果要逐字匹配特殊字符,请使用\来转义 > 例 ```bash 127.0.0.1:6379> MSET firstname Jack lastname Stuntman age 35 OK 127.0.0.1:6379> KEYS *name* 1) "lastname" 2) "firstname" 127.0.0.1:6379> KEYS a?? 1) "age" 127.0.0.1:6379> KEYS * 1) "age" 2) "lastname" 3) "firstname" ``` ### EXISTS key [key ...] 键是否存在 > 自1.0.0起可用。 返回键是否存在。从`Redis 3.0.3`开始,可以指定多个密钥而不是单个密钥,在这种情况下,它将返回现有键的总数。注意,为单个键返回1或0只是可变参数用法的一种特殊情况,因此该命令是完全向后兼容的。用户应注意,如果在参数中多次提及相同的现有键,则将对其进行多次计数。因此,如果`somekey`存在,`EXISTS somekey somekey`将返回2。 > 例 ```bash 127.0.0.1:6379> SET key1 hello OK 127.0.0.1:6379> EXISTS key1 (integer) 1 127.0.0.1:6379> EXISTS key2 (integer) 0 127.0.0.1:6379> SET key2 hello OK 127.0.0.1:6379> EXISTS key1 key2 (integer) 2 127.0.0.1:6379> EXISTS key1 key2 key2 (integer) 3 ``` ### TYPE key 查看键的类型 > 自1.0.0起可用。 返回存储在键上的值的类型的字符串表示形式。可以返回不同的类型有:`string`、`list`、`set`、`zset`、`hash`和`stream`。 > 例 ```bash 127.0.0.1:6379> SET key1 1 OK 127.0.0.1:6379> TYPE key1 string 127.0.0.1:6379> SET key2 "hello" OK 127.0.0.1:6379> TYPE key2 string 127.0.0.1:6379> LPUSH key3 hello (integer) 1 127.0.0.1:6379> TYPE key3 list 127.0.0.1:6379> SADD key4 hello (integer) 1 127.0.0.1:6379> TYPE key4 set ``` ### DEL key [key ...] 删除键 > 自1.0.0起可用。 删除指定的键。如果键不存在,则将其忽略。返回已删除的键的数量。 > 例 ```bash 127.0.0.1:6379> SET key1 hello1 OK 127.0.0.1:6379> SET key2 hello2 OK 127.0.0.1:6379> DEL key1 key2 (integer) 2 ``` ### UNLINK key [key ...] 删除键(异步) > 自4.0.0起可用。 此命令与`DEL`非常相似:它删除指定的键。就像`DEL`一样,如键不存在,则将其忽略。然而,该命令在另一个线程中执行实际的内存回收,因此它不会阻塞,而`DEL`会阻塞。这是命令名称的来源:该命令只是将键与键空间断开链接。实际的删除将在以后异步发生。返回值是整数:断开的键的数量。 > 例 ```bash 127.0.0.1:6379> SET key1 hello OK 127.0.0.1:6379> SET key2 hello OK 127.0.0.1:6379> UNLINK key1 key2 (integer) 2 ``` ### 键有效时间相关命令 #### TTL key 查看键剩余生存秒 > 自1.0.0起可用。 返回键的剩余生存秒数。 - 如果键不存在,则返回`-2`。 - 如果键存在但没有相关的过期时间,则命令返回`-1`。 > 例 ```bash 127.0.0.1:6379> SET key hello OK 127.0.0.1:6379> TTL key (integer) -1 127.0.0.1:6379> EXPIRE key 3 (integer) 1 127.0.0.1:6379> TTL key (integer) -2 ``` #### EXPIRE key seconds 设置键到期秒 > 自1.0.0起可用。 设置键超时时间(秒)。超时后,密钥将被自动删除。返回值为整数: - 1 如果设置了超时。 - 0 如果key不存在。 > 例 ```bash 127.0.0.1:6379> SET key hello OK 127.0.0.1:6379> EXPIRE key 10 (integer) 1 127.0.0.1:6379> TTL key (integer) 6 127.0.0.1:6379> SET key hello OK 127.0.0.1:6379> TTL key (integer) -1 ``` #### EXPIREAT key timestamp 设置键到期时间戳 > 自1.2.0起可用。 `EXPIREAT`具有与`EXPIRE`相同的作用和语义,但是它没有指定表示`TTL`(生存时间)的秒数,而是使用了绝对的`Unix`时间戳(自1970年1月1日以来的秒数)。过去的时间戳将立即删除该键。 > 例 ```bash 127.0.0.1:6379> SET key hello OK 127.0.0.1:6379> EXPIREAT key 1620609097 (integer) 1 127.0.0.1:6379> TTL key (integer) -2 ``` #### PTTL key | PEXPIRE key milliseconds | PEXPIREAT key milliseconds-timestamp > 自2.6.0起可用。 与上文的对应的`TTL`、`EXPIRE`、`EXPIREAT`命令类似,唯一的区别是上文三个命令以秒为单位,而这三个命令以毫秒为单位返回。 #### PERSIST key 设置键永不过期 > 自2.2.0起可用。 删除现有的超时键,将键从具有过期设置的键变为永不过期的键。 > 例 ```bash 127.0.0.1:6379> SET key hello OK 127.0.0.1:6379> EXPIRE key 10 (integer) 1 127.0.0.1:6379> TTL key (integer) 6 127.0.0.1:6379> PERSIST key (integer) 1 127.0.0.1:6379> TTL key (integer) -1 ```
17
全部评论