《保姆级Redis教程:安装配置+数据类型+命令大全,这一篇就够了》


🔥个人主页:北极的代码(欢迎来访)
🎬作者简介:java后端学习者
❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb
✨命运的结局尽可永在,不屈的挑战却不可须臾或缺!
前言:前面我们实现了项目的诸多功能,这里我们将实现项目的另一些功能,不过要学习一些前置知识--Redis
什么是Redis?
Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value存储系统。
核心特点
|
内存存储与持久化 数据主要存储在内存中,读写速度极快(每秒可处理10万+次读写操作) 支持RDB和AOF两种持久化方式,防止数据丢失 |
|
丰富的数据类型 不仅仅是简单的key-value存储 支持字符串、哈希、列表、集合、有序集合等多种数据结构 |
|
高可用与分布式 支持主从复制、哨兵模式实现高可用 支持Redis Cluster实现分布式集群 |
|
原子性操作:所有Redis操作都是原子性的,支持事务 |
既然知道了Redis是什么,那我们就可以直接去安装Redis了。
redis的安装非常简单,我们从官网上直接下载对应的压缩包,然后放在自己能找到的目录下解压,这样就算是安装完成了
官网:https://redis.io
中文网:https://www.redis.net.cn/

解压之后的目录如下:

解压完成之后,我们将启动Redis
直接在当前目录的窗口,输入cmd 回车,打开命令行,敲入 redis-server.exe redis.windows.conf(我们可以不用敲全,可以直接用tab键自动关联)

如图所示就是启动成功了,如果要停止,直接CTRL+C即可。
启动成功之后,我们就需要客户端来连接一下Redis服务,这时我们敲入cmd,重新进入一个命令行,然后输入redis-cli.exe,之后显示连接到本地的redis服务,端口号是6379,如果我们要退出客户端,我们直接在命令行中输入exit即可。我们也可以通过 -h -p 来指定连接哪个地方的服务(本地),以及指定端口。
补充:
Redis客户端是指连接和使用Redis服务器的程序或工具。可以这样理解:
-
Redis服务器:像一家银行,负责存储数据和提供服务
-
Redis客户端:像银行的客户,通过特定方式(窗口、ATM、手机App)与银行交互
由于Redis本身没有设置密码,为了安全起见,我们可以手动的为redis设置密码,这时我们关掉所有命令行,打开解压目录下的redis.windows.conf配置文件,这时我们只需用记事本打开,里面有一千多行的代码,我们直接用CTRL+F搜索:pass
![]()
由于#是注释的作用,我们要设置密码,就把前面的#删掉,把foobared替换成自己的密码即可。
上面我们使用命令行方式连接redis,用的不是很方便。
我们有直接的图形化界面可以使用,

redis安装和连接之后,我们来具体的了解redis的内容:
五种常用数据类型:
Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:
| 类型 | 说明 | 最大存储 | 底层实现 | 适用场景 |
|---|---|---|---|---|
| String | 字符串 | 512MB | SDS(简单动态字符串) | 缓存、计数器、分布式锁 |
| Hash | 哈希表 | 2^32-1个字段 | ziplist / hashtable | 对象存储、用户信息 |
| List | 列表 | 2^32-1个元素 | quicklist | 消息队列、时间轴 |
| Set | 集合 | 2^32-1个元素 | intset / hashtable | 标签系统、去重 |
| Sorted Set | 有序集合 | 2^32-1个元素 | ziplist / skiplist | 排行榜、延迟队列 |
Redis的常用命令:
String(字符串)类型命令
1. 基础操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| SET | SET key value [NX|XX] [EX seconds] |
设置值 | O(1) | SET name "张三" NX EX 60 |
| GET | GET key |
获取值 | O(1) | GET name |
| MSET | MSET key1 value1 key2 value2 |
批量设置 | O(N) | MSET k1 v1 k2 v2 |
| MGET | MGET key1 key2 |
批量获取 | O(N) | MGET k1 k2 |
| GETSET | GETSET key value |
设置新值返回旧值 | O(1) | GETSET count 10 |
| SETNX | SETNX key value |
不存在才设置 | O(1) | SETNX lock:1 "locked" |
| SETEX | SETEX key seconds value |
设置并指定过期 | O(1) | SETEX code 60 "123456" |
| PSETEX | PSETEX key ms value |
毫秒级过期 | O(1) | PSETEX token 5000 "abc" |

2. 数值操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| INCR | INCR key |
递增1 | O(1) | INCR page_view |
| INCRBY | INCRBY key increment |
增加指定值 | O(1) | INCRBY score 5 |
| INCRBYFLOAT | INCRBYFLOAT key increment |
浮点数递增 | O(1) | INCRBYFLOAT price 10.5 |
| DECR | DECR key |
递减1 | O(1) | DECR stock |
| DECRBY | DECRBY key decrement |
减少指定值 | O(1) | DECRBY quantity 3 |
3. 字符串操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| APPEND | APPEND key value |
追加字符串 | O(1) | APPEND msg " world" |
| STRLEN | STRLEN key |
获取长度 | O(1) | STRLEN content |
| GETRANGE | GETRANGE key start end |
截取子串 | O(N) | GETRANGE text 0 5 |
| SETRANGE | SETRANGE key offset value |
覆盖指定位置 | O(1) | SETRANGE name 2 "aa" |
| STRALGO | STRALGO LCS key1 key2 |
最长公共子串 | O(N) | STRALGO LCS str1 str2 |
4. 位图操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| SETBIT | SETBIT key offset value |
设置位 | O(1) | SETBIT bits 10 1 |
| GETBIT | GETBIT key offset |
获取位 | O(1) | GETBIT bits 10 |
| BITCOUNT | BITCOUNT key [start end] |
统计1的个数 | O(N) | BITCOUNT user:1:sign |
| BITOP | BITOP operation dest key1 key2 |
位运算 | O(N) | BITOP AND result bits1 bits2 |
| BITPOS | BITPOS key bit [start end] |
查找位位置 | O(N) | BITPOS bits 1 |
Hash(哈希)类型命令
1. 字段操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| HSET | HSET key field value |
设置字段 | O(1) | HSET user:1 name "张三" |
| HSETNX | HSETNX key field value |
字段不存在才设置 | O(1) | HSETNX user:1 email "a@b.com" |
| HGET | HGET key field |
获取字段 | O(1) | HGET user:1 name |
| HMSET | HMSET key field1 val1 field2 val2 |
批量设置 | O(N) | HMSET user:1 name "张三" age 25 |
| HMGET | HMGET key field1 field2 |
批量获取 | O(N) | HMGET user:1 name age |
| HDEL | HDEL key field1 field2 |
删除字段 | O(N) | HDEL user:1 email phone |
2. 批量操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| HGETALL | HGETALL key |
获取所有字段和值 | O(N) | HGETALL user:1 |
| HKEYS | HKEYS key |
获取所有字段名 | O(N) | HKEYS config |
| HVALS | HVALS key |
获取所有字段值 | O(N) | HVALS product:1 |
| HLEN | HLEN key |
获取字段数量 | O(1) | HLEN cart:123 |
| HEXISTS | HEXISTS key field |
判断字段是否存在 | O(1) | HEXISTS user:1 email |
3. 数值操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| HINCRBY | HINCRBY key field increment |
整数递增 | O(1) | HINCRBY user:1 age 1 |
| HINCRBYFLOAT | HINCRBYFLOAT key field increment |
浮点数递增 | O(1) | HINCRBYFLOAT account:1 balance 100.5 |
4. 遍历操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| HSCAN | HSCAN key cursor [MATCH pattern] |
游标遍历字段 | O(1)每次迭代 | HSCAN user:1 0 MATCH name* |
| HSTRLEN | HSTRLEN key field |
字段值长度 | O(1) | HSTRLEN user:1 name |
List(列表)类型命令
1. 插入操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| LPUSH | LPUSH key value1 value2 |
左侧插入 | O(1)每个元素 | LPUSH queue task1 task2 |
| RPUSH | RPUSH key value1 value2 |
右侧插入 | O(1)每个元素 | RPUSH logs "error1" "error2" |
| LPUSHX | LPUSHX key value |
列表存在才左侧插入 | O(1) | LPUSHX active_queue task |
| RPUSHX | RPUSHX key value |
列表存在才右侧插入 | O(1) | RPUSHX active_logs "info" |
| LINSERT | LINSERT key BEFORE|AFTER pivot value |
指定位置插入 | O(N) | LINSERT list BEFORE "b" "a" |
2. 弹出操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| LPOP | LPOP key [count] |
左侧弹出 | O(N) count个 | LPOP queue |
| RPOP | RPOP key [count] |
右侧弹出 | O(N) count个 | RPOP logs |
| BLPOP | BLPOP key1 key2 timeout |
阻塞式左侧弹出 | O(1) | BLPOP queue 10 |
| BRPOP | BRPOP key1 key2 timeout |
阻塞式右侧弹出 | O(1) | BRPOP task_queue 5 |
| RPOPLPUSH | RPOPLPUSH source dest |
弹出并推入 | O(1) | RPOPLPUSH queue backup |
| BRPOPLPUSH | BRPOPLPUSH source dest timeout |
阻塞版RPOPLPUSH | O(1) | BRPOPLPUSH queue backup 10 |
3. 查看操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| LRANGE | LRANGE key start stop |
范围获取 | O(S+N) | LRANGE list 0 -1 |
| LINDEX | LINDEX key index |
获取指定位置 | O(N) | LINDEX list 0 |
| LLEN | LLEN key |
获取长度 | O(1) | LLEN queue |
| LPOS | LPOS key value [RANK rank] |
查找元素位置 | O(N) | LPOS list "apple" |
4. 修改操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| LSET | LSET key index value |
设置指定位置 | O(N) | LSET list 0 "new" |
| LREM | LREM key count value |
删除元素 | O(N) | LREM list 2 "apple" |
| LTRIM | LTRIM key start stop |
截取列表 | O(N) | LTRIM queue 0 99 |
| LMOVE | LMOVE source dest LEFT|RIGHT LEFT|RIGHT |
元素移动 | O(1) | LMOVE queue backup LEFT LEFT |
| BLMOVE | BLMOVE source dest timeout |
阻塞版LMOVE | O(1) | BLMOVE queue backup LEFT LEFT 10 |
Set(集合)类型命令
1. 基本操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| SADD | SADD key member1 member2 |
添加元素 | O(N) | SADD tags "redis" "database" |
| SREM | SREM key member1 member2 |
删除元素 | O(N) | SREM tags "redis" |
| SMOVE | SMOVE source dest member |
移动元素 | O(1) | SMOVE set1 set2 "apple" |
| SPOP | SPOP key [count] |
随机弹出 | O(N) | SPOP lottery 3 |
| SISMEMBER | SISMEMBER key member |
判断是否存在 | O(1) | SISMEMBER admins "user1" |
2. 查看操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| SMEMBERS | SMEMBERS key |
获取所有元素 | O(N) | SMEMBERS online_users |
| SCARD | SCARD key |
获取元素数量 | O(1) | SCARD followers:1001 |
| SRANDMEMBER | SRANDMEMBER key [count] |
随机获取元素 | O(N) | SRANDMEMBER lottery 2 |
3. 集合运算
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| SINTER | SINTER key1 key2 |
交集 | O(N*M) | SINTER set1 set2 |
| SINTERSTORE | SINTERSTORE dest key1 key2 |
交集存储 | O(N*M) | SINTERSTORE result set1 set2 |
| SUNION | SUNION key1 key2 |
并集 | O(N) | SUNION set1 set2 |
| SUNIONSTORE | SUNIONSTORE dest key1 key2 |
并集存储 | O(N) | SUNIONSTORE all set1 set2 |
| SDIFF | SDIFF key1 key2 |
差集 | O(N) | SDIFF set1 set2 |
| SDIFFSTORE | SDIFFSTORE dest key1 key2 |
差集存储 | O(N) | SDIFFSTORE result set1 set2 |
4. 遍历操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| SSCAN | SSCAN key cursor [MATCH pattern] |
游标遍历 | O(1)每次迭代 | SSCAN users 0 MATCH user:* |
Sorted Set(有序集合)类型命令
1. 基本操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| ZADD | ZADD key [NX|XX] score member |
添加元素 | O(log N) | ZADD leaderboard 100 "player1" |
| ZREM | ZREM key member1 member2 |
删除元素 | O(M log N) | ZREM leaderboard "player1" |
| ZINCRBY | ZINCRBY key increment member |
增加分数 | O(log N) | ZINCRBY leaderboard 10 "player1" |
| ZSCORE | ZSCORE key member |
获取分数 | O(1) | ZSCORE leaderboard "player1" |
| ZCARD | ZCARD key |
获取元素数量 | O(1) | ZCARD leaderboard |
2. 排名操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| ZRANK | ZRANK key member |
正序排名 | O(log N) | ZRANK leaderboard "player1" |
| ZREVRANK | ZREVRANK key member |
倒序排名 | O(log N) | ZREVRANK leaderboard "player1" |
| ZRANGE | ZRANGE key start stop [WITHSCORES] |
正序范围 | O(log N+M) | ZRANGE leaderboard 0 9 WITHSCORES |
| ZREVRANGE | ZREVRANGE key start stop [WITHSCORES] |
倒序范围 | O(log N+M) | ZREVRANGE leaderboard 0 9 |
| ZRANGEBYSCORE | ZRANGEBYSCORE key min max |
按分数范围 | O(log N+M) | ZRANGEBYSCORE scores 80 100 |
| ZREVRANGEBYSCORE | ZREVRANGEBYSCORE key max min |
倒序按分数 | O(log N+M) | ZREVRANGEBYSCORE scores 100 80 |
3. 计数和删除
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| ZCOUNT | ZCOUNT key min max |
统计分数范围内数量 | O(log N) | ZCOUNT scores 60 100 |
| ZREMRANGEBYRANK | ZREMRANGEBYRANK key start stop |
按排名删除 | O(log N+M) | ZREMRANGEBYRANK leaderboard 0 99 |
| ZREMRANGEBYSCORE | ZREMRANGEBYSCORE key min max |
按分数删除 | O(log N+M) | ZREMRANGEBYSCORE scores 0 59 |
| ZREMRANGEBYLEX | ZREMRANGEBYLEX key min max |
按字典序删除 | O(log N+M) | ZREMRANGEBYLEX words [a [z |
4. 集合运算
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| ZUNIONSTORE | ZUNIONSTORE dest numkeys key1 key2 |
并集 | O(N)+O(M log M) | ZUNIONSTORE total 2 set1 set2 |
| ZINTERSTORE | ZINTERSTORE dest numkeys key1 key2 |
交集 | O(N*K)+O(M log M) | ZINTERSTORE common 2 set1 set2 |
| ZDIFFSTORE | ZDIFFSTORE dest numkeys key1 key2 |
差集 | O(N)+O(M log M) | ZDIFFSTORE diff 2 set1 set2 |
| ZUNION | ZUNION numkeys key1 key2 |
并集不存储 | O(N)+O(M log M) | ZUNION 2 set1 set2 |
| ZINTER | ZINTER numkeys key1 key2 |
交集不存储 | O(N*K)+O(M log M) | ZINTER 2 set1 set2 |
| ZDIFF | ZDIFF numkeys key1 key2 |
差集不存储 | O(N)+O(M log M) | ZDIFF 2 set1 set2 |
5. 字典序操作(分数相同时)
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| ZRANGEBYLEX | ZRANGEBYLEX key min max |
按字典序范围 | O(log N+M) | ZRANGEBYLEX words [a [z |
| ZREVRANGEBYLEX | ZREVRANGEBYLEX key max min |
倒序字典序 | O(log N+M) | ZREVRANGEBYLEX words [z [a |
| ZLEXCOUNT | ZLEXCOUNT key min max |
字典序范围计数 | O(log N) | ZLEXCOUNT words [a [z |
6. 遍历操作
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| ZSCAN | ZSCAN key cursor [MATCH pattern] |
游标遍历 | O(1)每次迭代 | ZSCAN leaderboard 0 MATCH player* |
通用命令(适用于所有数据类型)
| 命令 | 语法 | 说明 | 示例 |
|---|---|---|---|
| KEYS | KEYS pattern |
查找所有匹配的key | KEYS user:* |
| EXISTS | EXISTS key |
判断key是否存在 | EXISTS username |
| TYPE | TYPE key |
查看key的类型 | TYPE user:1 |
| DEL | DEL key1 key2... |
删除key | DEL user:1 cache:2 |
| EXPIRE | EXPIRE key seconds |
设置过期时间 | EXPIRE code 60 |
| TTL | TTL key |
查看剩余时间 | TTL session:123 |
| PERSIST | PERSIST key |
移除过期时间 | PERSIST token:456 |
| RENAME | RENAME old new |
重命名key | RENAME user user:1 |
| RANDOMKEY | RANDOMKEY |
随机返回一个key | RANDOMKEY |
| DUMP | DUMP key |
序列化key | DUMP user:1 |
| RESTORE | RESTORE key ttl value |
反序列化 | RESTORE user:1 0 "\x00..." |
| SCAN | SCAN cursor [MATCH pattern] |
游标迭代key | SCAN 0 MATCH user:* |
HyperLogLog 类型命令
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| PFADD | PFADD key element1 element2 |
添加元素 | O(1) | PFADD unique_visits ip1 ip2 |
| PFCOUNT | PFCOUNT key1 key2 |
统计基数 | O(1) | PFCOUNT unique_visits |
| PFMERGE | PFMERGE dest key1 key2 |
合并 | O(N) | PFMERGE total_visits visit1 visit2 |
Bitmap 相关命令
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| SETBIT | SETBIT key offset value |
设置位 | O(1) | SETBIT sign:20240101 1001 1 |
| GETBIT | GETBIT key offset |
获取位 | O(1) | GETBIT sign:20240101 1001 |
| BITCOUNT | BITCOUNT key [start end] |
统计1的个数 | O(N) | BITCOUNT sign:20240101 |
| BITPOS | BITPOS key bit [start end] |
查找位位置 | O(N) | BITPOS sign:20240101 1 |
| BITOP | BITOP op dest key1 key2 |
位运算 | O(N) | BITOP AND result bits1 bits2 |
| BITFIELD | BITFIELD key [GET type offset] |
多位操作 | O(1) | BITFIELD mykey INCRBY i5 100 1 GET u4 0 |
Geo 地理空间命令
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| GEOADD | GEOADD key longitude latitude member |
添加地理位置 | O(log N) | GEOADD cities 116.40 39.90 "北京" |
| GEOPOS | GEOPOS key member1 member2 |
获取位置 | O(log N) | GEOPOS cities "北京" |
| GEODIST | GEODIST key member1 member2 [unit] |
计算距离 | O(log N) | GEODIST cities "北京" "上海" km |
| GEORADIUS | GEORADIUS key lng lat radius unit |
半径查询 | O(N+log N) | GEORADIUS cities 116.40 39.90 100 km |
| GEORADIUSBYMEMBER | GEORADIUSBYMEMBER key member radius unit |
以成员为中心 | O(log N) | GEORADIUSBYMEMBER cities "北京" 100 km |
| GEOHASH | GEOHASH key member1 member2 |
获取GeoHash | O(log N) | GEOHASH cities "北京" |
| GEOSEARCH | GEOSEARCH key [FROMMEMBER member] |
高级搜索 | O(N+log N) | GEOSEARCH cities FROMLONLAT 116 39 BYRADIUS 100 km |
Stream 流类型命令
1. 生产和消费
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| XADD | XADD key * field value |
添加消息 | O(log N) | XADD mystream * name "张三" age 25 |
| XREAD | XREAD COUNT count STREAMS key id |
读取消息 | O(N) | XREAD COUNT 10 STREAMS mystream 0 |
| XRANGE | XRANGE key start end [COUNT count] |
范围查询 | O(log N+M) | XRANGE mystream - + COUNT 10 |
| XREVRANGE | XREVRANGE key end start [COUNT count] |
反向范围 | O(log N+M) | XREVRANGE mystream + - COUNT 10 |
2. 消费者组
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| XGROUP | XGROUP CREATE key group id |
创建消费组 | O(1) | XGROUP CREATE mystream mygroup $ |
| XREADGROUP | XREADGROUP GROUP group consumer |
组消费 | O(N) | XREADGROUP GROUP mygroup c1 COUNT 10 STREAMS mystream > |
| XACK | XACK key group id1 id2 |
确认消息 | O(1) | XACK mystream mygroup 123-0 |
| XPENDING | XPENDING key group |
查看待确认 | O(1) | XPENDING mystream mygroup |
| XCLAIM | XCLAIM key group consumer min-idle-time id |
转移消息 | O(log N) | XCLAIM mystream mygroup c2 3600000 123-0 |
3. 管理和删除
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| XDEL | XDEL key id |
删除消息 | O(1) | XDEL mystream 123-0 |
| XLEN | XLEN key |
获取长度 | O(1) | XLEN mystream |
| XTRIM | XTRIM key MAXLEN count |
裁剪流 | O(N) | XTRIM mystream MAXLEN 1000 |
| XINFO | XINFO STREAM key |
查看流信息 | O(1) | XINFO STREAM mystream |
事务相关命令
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| MULTI | MULTI |
开启事务 | O(1) | MULTI |
| EXEC | EXEC |
执行事务 | 取决于命令 | EXEC |
| DISCARD | DISCARD |
取消事务 | O(1) | DISCARD |
| WATCH | WATCH key1 key2 |
监视key | O(1) | WATCH balance |
| UNWATCH | UNWATCH |
取消监视 | O(1) | UNWATCH |
发布订阅命令
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| PUBLISH | PUBLISH channel message |
发布消息 | O(N+M) | PUBLISH news "Hello" |
| SUBSCRIBE | SUBSCRIBE channel1 channel2 |
订阅频道 | O(N) | SUBSCRIBE news sports |
| UNSUBSCRIBE | UNSUBSCRIBE [channel] |
取消订阅 | O(N) | UNSUBSCRIBE news |
| PSUBSCRIBE | PSUBSCRIBE pattern1 pattern2 |
模式订阅 | O(N) | PSUBSCRIBE news.* |
| PUNSUBSCRIBE | PUNSUBSCRIBE [pattern] |
取消模式订阅 | O(N) | PUNSUBSCRIBE news.* |
| PUBSUB | PUBSUB subcommand [arg] |
查看订阅信息 | O(N) | PUBSUB CHANNELS |
Lua脚本命令
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| EVAL | EVAL script numkeys key1 arg1 |
执行脚本 | 取决于脚本 | EVAL "return redis.call('set',KEYS[1],ARGV[1])" 1 name "张三" |
| EVALSHA | EVALSHA sha1 numkeys key1 arg1 |
执行缓存脚本 | 取决于脚本 | EVALSHA "6b1bf0c3" 1 name "张三" |
| SCRIPT LOAD | SCRIPT LOAD script |
加载脚本 | O(N) | SCRIPT LOAD "return redis.call('get',KEYS[1])" |
| SCRIPT EXISTS | SCRIPT EXISTS sha1... |
检查脚本 | O(N) | SCRIPT EXISTS "6b1bf0c3" |
| SCRIPT FLUSH | SCRIPT FLUSH |
清除所有脚本 | O(N) | SCRIPT FLUSH |
| SCRIPT KILL | SCRIPT KILL |
终止脚本 | O(1) | SCRIPT KILL |
连接管理命令
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| AUTH | AUTH password |
密码认证 | O(1) | AUTH mypassword |
| PING | PING |
测试连接 | O(1) | PING |
| ECHO | ECHO message |
返回消息 | O(1) | ECHO "Hello" |
| SELECT | SELECT index |
切换数据库 | O(1) | SELECT 1 |
| QUIT | QUIT |
关闭连接 | O(1) | QUIT |
| CLIENT | CLIENT LIST |
客户端管理 | O(N) | CLIENT LIST |
服务器管理命令
| 命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
| INFO | INFO [section] |
服务器信息 | O(1) | INFO server |
| CONFIG GET | CONFIG GET pattern |
获取配置 | O(N) | CONFIG GET *max* |
| CONFIG SET | CONFIG SET parameter value |
设置配置 | O(1) | CONFIG SET maxmemory 1gb |
| DBSIZE | DBSIZE |
当前数据库key数量 | O(1) | DBSIZE |
| FLUSHDB | FLUSHDB [ASYNC] |
清空当前数据库 | O(N) | FLUSHDB ASYNC |
| FLUSHALL | FLUSHALL [ASYNC] |
清空所有数据库 | O(N) | FLUSHALL ASYNC |
| SAVE | SAVE |
同步保存 | O(N) | SAVE |
| BGSAVE | BGSAVE |
后台保存 | O(1) | BGSAVE |
| LASTSAVE | LASTSAVE |
最后保存时间 | O(1) | LASTSAVE |
| SHUTDOWN | SHUTDOWN [SAVE|NOSAVE] |
关闭服务器 | O(N) | SHUTDOWN SAVE |
| TIME | TIME |
服务器时间 | O(1) | TIME |
常用命令速查表
| 操作类型 | String | Hash | List | Set | Sorted Set |
|---|---|---|---|---|---|
| 添加 | SET |
HSET |
LPUSH/RPUSH |
SADD |
ZADD |
| 获取 | GET |
HGET |
LINDEX |
SMEMBERS |
ZRANGE |
| 删除 | DEL |
HDEL |
LREM |
SREM |
ZREM |
| 存在 | EXISTS |
HEXISTS |
- | SISMEMBER |
- |
| 长度 | STRLEN |
HLEN |
LLEN |
SCARD |
ZCARD |
| 批量 | MGET/MSET |
HMGET/HMSET |
LPUSH/RPUSH |
SADD |
ZADD |
| 递增 | INCR |
HINCRBY |
- | - | ZINCRBY |
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)