
Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value存储系统。
内存存储与持久化 数据主要存储在内存中,读写速度极快(每秒可处理10万+次读写操作) 支持RDB和AOF两种持久化方式,防止数据丢失 |
|---|
丰富的数据类型 不仅仅是简单的key-value存储 支持字符串、哈希、列表、集合、有序集合等多种数据结构 |
高可用与分布式 支持主从复制、哨兵模式实现高可用 支持Redis Cluster实现分布式集群 |
原子性操作:所有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设置密码,这时我们关掉所有命令行,打开解压目录下的redis.windows.conf配置文件,这时我们只需用记事本打开,里面有一千多行的代码,我们直接用CTRL+F搜索:pass

由于#是注释的作用,我们要设置密码,就把前面的#删掉,把foobared替换成自己的密码即可。
上面我们使用命令行方式连接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 | 排行榜、延迟队列 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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" |

命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
HSCAN | HSCAN key cursor [MATCH pattern] | 游标遍历字段 | O(1)每次迭代 | HSCAN user:1 0 MATCH name* |
HSTRLEN | HSTRLEN key field | 字段值长度 | O(1) | HSTRLEN user:1 name |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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" |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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" |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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" |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
SSCAN | SSCAN key cursor [MATCH pattern] | 游标遍历 | O(1)每次迭代 | SSCAN users 0 MATCH user:* |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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:* |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |
命令 | 语法 | 说明 | 时间复杂度 | 示例 |
|---|---|---|---|---|
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 |