1. Redis服务器和客户端命令
redis-server
- 作用:启动Redis服务器。
- 返回值:无直接返回值,启动成功后进入运行状态。
- 示例:
1
2
3redis-server # 使用默认配置启动
redis-server /etc/redis/redis.conf # 指定配置文件启动
redis-server --port 6380 # 指定端口启动 - 注意事项:可在后台运行,使用
--daemonize yes参数,避免阻塞终端。 - 推荐使用:部署Redis服务时使用,确保配置文件路径正确。
redis-cli
- 作用:启动Redis命令行客户端,与服务器交互。
- 返回值:无直接返回值,进入交互模式。
- 示例:
1
2
3redis-cli # 连接本地默认服务器127.0.0.1:6379
redis-cli -h 192.168.1.100 -p 6380 # 连接指定主机和端口
redis-cli -a mypassword # 使用密码连接 - 注意事项:确保服务器已启动,默认连接本地6379端口。
- 推荐使用:调试或手动操作Redis时使用。
2. 通用命令
这些命令适用于所有键,不限定特定数据类型,主要用于管理键的元信息(如存在性、类型、过期时间等)。
keys
作用:查找匹配模式的键。
返回值:匹配的键列表,空列表表示无匹配键。
示例:
1
2
3keys * # 返回所有键,如 ["key1", "key2", "user:1"]
keys user:* # 返回以“user:”开头的键,如 ["user:1", "user:2"]
keys abc # 返回精确匹配“abc”的键,如 ["abc"]注意事项:生产环境慎用,会扫描整个键空间,影响性能。
推荐使用:调试或小规模数据时使用。
替代命令:
- 命令:
SCAN - 作用:逐步扫描键空间,避免性能问题。
- 示例:
SCAN 0 MATCH user:* COUNT 10 - 说明:更适合大数据量场景。
- 命令:
type
- 作用:返回键的数据类型。
- 返回值:
string,list,set,zset,hash,none(键不存在)。 - 示例:
1
2
3
4
5set mykey "hello"
type mykey # 返回 "string"
lpush mylist 1
type mylist # 返回 "list"
type nonexistent # 返回 "none" - 注意事项:仅返回类型,不涉及值。
- 推荐使用:检查键类型以避免操作错误。
exists
- 作用:检查键是否存在。
- 返回值:
1:存在。0:不存在。
- 示例:
1
2
3set mykey "hello"
exists mykey # 返回 1
exists nonexistent # 返回 0 - 注意事项:性能开销低。
- 推荐使用:在操作键前验证其存在性。
del
- 作用:删除一个或多个键。
- 返回值:删除的键数量。
- 示例:
1
2
3
4
5set key1 "v1"
set key2 "v2"
del key1 # 返回 1
del key2 key3 # 返回 1(key3不存在)
del nonexistent # 返回 0 - 注意事项:键不存在时不报错,返回0。
- 推荐使用:清理无用数据。
expire
- 作用:设置键的过期时间(单位:秒)。
- 返回值:
1:设置成功。0:键不存在或无法设置。
- 示例:
1
2
3set mykey "hello"
expire mykey 60 # 返回 1,60秒后过期
expire nonexistent 10 # 返回 0 - 注意事项:覆盖原有过期时间。
- 推荐使用:实现临时数据存储。
ttl
- 作用:返回键的剩余生存时间(单位:秒)。
- 返回值:
- 正整数:剩余秒数。
-1:无过期时间。-2:键不存在。
- 示例:
1
2
3
4
5
6set mykey "hello"
expire mykey 60
ttl mykey # 返回 60(或稍少)
set permkey "hi"
ttl permkey # 返回 -1
ttl nonexistent # 返回 -2 - 注意事项:常与
expire配合使用。 - 推荐使用:检查键的有效期。
persist
- 作用:移除键的过期时间,使其永久存在。
- 返回值:
1:成功移除。0:键不存在或无过期时间。
- 示例:
1
2
3
4set mykey "hello"
expire mykey 60
persist mykey # 返回 1
persist permkey # 返回 0(无过期时间) - 注意事项:对无过期时间的键无影响。
- 推荐使用:将临时键转为永久键。
rename
- 作用:重命名键。
- 返回值:
OK:成功。- 错误:键不存在。
- 示例:
1
2
3set oldkey "value"
rename oldkey newkey # 返回 "OK",oldkey变为newkey
get newkey # 返回 "value" - 注意事项:若newkey已存在,会被覆盖。
- 推荐使用:调整键名时使用。
3. 字符串(String)命令
字符串是Redis最基本的数据类型,可存储文本、数字或二进制数据,适合简单的键值对操作。
set
- 作用:设置键的值。
- 返回值:
OK。 - 示例:
1
2
3set mykey "hello" # 返回 "OK"
set mykey "world" # 返回 "OK",覆盖旧值
set counter 100 # 返回 "OK",存储数字 - 注意事项:键存在时覆盖旧值。
- 推荐使用:存储简单数据。
get
- 作用:获取键的值。
- 返回值:
- 字符串值:键存在。
nil:键不存在。
- 示例:
1
2
3set mykey "hello"
get mykey # 返回 "hello"
get nonexistent # 返回nil - 注意事项:仅适用于字符串类型。
- 推荐使用:读取单个值。
mset
- 作用:同时设置多个键值对。
- 返回值:
OK。 - 示例:
1
2
3mset key1 "v1" key2 "v2" # 返回 "OK"
get key1 # 返回 "v1"
get key2 # 返回 "v2" - 注意事项:覆盖已有键的值。
- 推荐使用:批量设置提高效率。
mget
- 作用:同时获取多个键的值。
- 返回值:值列表,未找到的键返回
nil。 - 示例:
1
2mset key1 "v1" key2 "v2"
mget key1 key2 key3 # 返回 ["v1", "v2", nil] - 注意事项:返回的结果顺序与输入一致。
- 推荐使用:批量读取减少请求。
append
- 作用:将值追加到键的现有值后。
- 返回值:追加后字符串长度。
- 示例:
1
2
3
4set mykey "hello"
append mykey " world" # 返回 11
get mykey # 返回 "hello world"
append newkey "start" # 返回 5(键不存在时新建) - 注意事项:键不存在时等同于
set。 - 推荐使用:扩展字符串内容。
decr
- 作用:将键的整数值减1。
- 返回值:减1后的值。
- 示例:
1
2
3set counter 10
decr counter # 返回 9
decr newcounter # 返回 -1(键不存在时从0开始) - 注意事项:
- 键不存在:初始值0,减1后为-1。
- 非整数值:报错。
- 推荐使用:计数器递减。
incr
- 作用:将键的整数值加1。
- 返回值:加1后的值。
- 示例:
1
2
3set counter 10
incr counter # 返回 11
incr newcounter # 返回 1(键不存在时从0开始) - 注意事项:
- 键不存在:初始值0,加1后为1。
- 非整数值:报错。
- 推荐使用:计数器递增。
strlen
- 作用:返回键值的字符串长度。
- 返回值:
- 整数:长度。
0:键不存在。
- 示例:
1
2
3set mykey "hello"
strlen mykey # 返回 5
strlen nonexistent # 返回 0 - 注意事项:仅适用于字符串类型。
- 推荐使用:检查字符串长度。
setex
- 作用:设置键值并指定过期时间(单位:秒)。
- 返回值:
OK。 - 示例:
1
2
3setex mykey 10 "hello" # 返回 "OK",10秒后过期
get mykey # 返回 "hello"
ttl mykey # 返回 10(或稍少) - 注意事项:覆盖旧值和过期时间。
- 推荐使用:创建带过期时间的临时数据。
4. 列表(List)命令
列表是一个有序、可重复的元素集合,基于双向链表实现,适合队列或栈场景。
lpush
作用:从列表左侧(头部)插入元素。
返回值:插入后列表长度。
示例:
1
2
3lpush mylist "a" # 返回 1
lpush mylist "b" "c" # 返回 3
lrange mylist 0 -1 # 返回 ["c", "b", "a"]注意事项:键不存在时创建新列表。
推荐使用:实现栈或左侧队列。
lrange
- 作用:获取列表指定范围的元素。
- 返回值:元素列表。
- 示例:
1
2
3lpush mylist "a" "b" "c"
lrange mylist 0 1 # 返回 ["c", "b"]
lrange mylist 0 -1 # 返回 ["c", "b", "a"] - 注意事项:索引从0开始,-1表示末尾。
- 推荐使用:读取列表内容。
rpush
- 作用:从列表右侧(尾部)插入元素。
- 返回值:插入后列表长度。
- 示例:
1
2
3rpush mylist "a" # 返回 1
rpush mylist "b" "c" # 返回 3
lrange mylist 0 -1 # 返回 ["a", "b", "c"] - 注意事项:键不存在时创建新列表。
- 推荐使用:实现队列或右侧追加。
linsert
- 作用:在指定元素前后插入新元素。
- 返回值:
- 插入后长度:成功。
-1:指定元素不存在。
- 示例:
1
2
3rpush mylist "a" "b" "c"
linsert mylist BEFORE "b" "x" # 返回 4
lrange mylist 0 -1 # 返回 ["a", "x", "b", "c"] - 注意事项:需指定
BEFORE或AFTER。 - 推荐使用:精确插入元素。
lindex
- 作用:获取指定索引的元素。
- 返回值:
- 元素值:存在。
nil:索引超出范围或键不存在。
- 示例:
1
2
3rpush mylist "a" "b" "c"
lindex mylist 1 # 返回 "b"
lindex mylist 10 # 返回 (nil) - 注意事项:索引从0开始。
- 推荐使用:访问特定位置元素。
llen
- 作用:返回列表长度。
- 返回值:
- 整数:长度。
0:键不存在。
- 示例:
1
2
3rpush mylist "a" "b"
llen mylist # 返回 2
llen nonexistent # 返回 0 - 注意事项:性能高效。
- 推荐使用:检查列表大小。
lset
作用:设置指定索引的值。
返回值:
OK:成功。- 错误:索引超范围或键不存在。
示例:
1
2
3rpush mylist "a" "b" "c"
lset mylist 1 "x" # 返回 "OK"
lrange mylist 0 -1 # 返回 ["a", "x", "c"]注意事项:索引必须有效。
推荐使用:修改列表元素。
lrem
- 作用:移除指定数量的匹配元素。
- 返回值:移除的元素数量。
- 示例:
1
2
3rpush mylist "a" "b" "a" "c"
lrem mylist 2 "a" # 返回 2
lrange mylist 0 -1 # 返回 ["b", "c"] - 注意事项:count为0时移除所有匹配。
- 推荐使用:清理重复元素。
5. 集合(Set)命令
集合是无序、不重复的元素集合,适合成员关系检查和集合运算。
sadd
作用:向集合添加元素。
返回值:成功添加的元素数量。
示例:
1
2sadd myset "a" # 返回 1
sadd myset "b" "a" # 返回 1("a"已存在)注意事项:重复元素会被忽略。
推荐使用:添加唯一元素。
smembers
作用:返回集合所有元素。
返回值:元素列表。
示例:
1
2sadd myset "a" "b" "c"
smembers myset # 返回 ["a", "b", "c"]注意事项:无序输出。
推荐使用:查看集合内容。
sinter
- 作用:返回多个集合的交集。
- 返回值:交集元素列表。
- 示例:
1
2
3sadd set1 "a" "b" "c"
sadd set2 "b" "c" "d"
sinter set1 set2 # 返回 ["b", "c"] - 注意事项:至少两个集合。
- 推荐使用:查找共同元素。
sdiff
作用:返回第一个集合与第二个集合的差集,但只包含第一个集合的值。
返回值:差集元素列表。
示例:
1
2
3sadd set1 "a" "b" "c"
sadd set2 "b" "d"
sdiff set1 set2 # 返回 ["a", "c"]注意事项:顺序影响结果。
推荐使用:查找独有元素。
sunion
- 作用:返回多个集合的并集。
- 返回值:并集元素列表。
- 示例:
1
2
3sadd set1 "a" "b"
sadd set2 "b" "c"
sunion set1 set2 # 返回 ["a", "b", "c"] - 注意事项:自动去重。
- 推荐使用:合并集合。
spop
- 作用:随机移除并返回一个元素。
- 返回值:移除的元素。
- 示例:
1
2
3sadd myset "a" "b" "c"
spop myset # 返回 "b"(随机)
smembers myset # 返回 ["a", "c"] - 注意事项:集合为空时返回
nil。 - 推荐使用:随机抽取元素。
srem
- 作用:移除集合中的指定元素。
- 返回值:移除的元素数量。
- 示例:
1
2sadd myset "a" "b" "c"
srem myset "b" "d" # 返回 1("d"不存在) - 注意事项:不存在的元素忽略。
- 推荐使用:删除特定元素。
sismember
- 作用:检查元素是否在集合中。
- 返回值:
1:存在。0:不存在。
- 示例:
1
2
3sadd myset "a" "b"
sismember myset "a" # 返回 1
sismember myset "c" # 返回 0 - 注意事项:高效查询。
- 推荐使用:验证成员关系。
srandmember
- 作用:随机返回集合中的元素(不移除)。
- 返回值:随机元素。
- 示例:
1
2sadd myset "a" "b" "c"
srandmember myset # 返回 "a"(随机) - 注意事项:可指定返回数量。
- 推荐使用:随机选择元素。
smove
- 作用:将元素从一个集合移动到另一个集合。
- 返回值:
1:成功。0:元素不存在。
- 示例:
1
2
3
4sadd set1 "a" "b"
sadd set2 "c"
smove set1 set2 "a" # 返回 1
smembers set2 # 返回 ["c", "a"] - 注意事项:源集合会减少元素。
- 推荐使用:元素迁移。
6. 有序集合(Sorted Set)命令
有序集合是有序、不重复的元素集合,每个元素关联一个分数,适合 排行榜或优先级队列。
zadd
作用:添加元素及其分数。
返回值:新增的元素数量。
示例:
1
2zadd myset 1 "a" # 返回 1
zadd myset 2 "b" 1 "a" # 返回 1("a"已存在)注意事项:重复元素更新分数。
推荐使用:构建排行榜。
zrevrange
- 作用:按分数从高到低返回指定范围元素。
- 返回值:元素列表。
- 示例:
1
2zadd myset 1 "a" 2 "b" 3 "c"
zrevrange myset 0 1 # 返回 ["c", "b"] - 注意事项:索引从0开始。
- 推荐使用:获取高分元素。
zcount
- 作用:统计分数范围内的元素数量。
- 返回值:数量。
- 示例:
1
2zadd myset 1 "a" 2 "b" 3 "c"
zcount myset 1 2 # 返回 2 - 注意事项:包含边界值。
- 推荐使用:统计符合条件的元素。
zrank
- 作用:返回元素从低到高的排名。
- 返回值:
- 整数:排名(从0开始)。
nil:元素不存在。
- 示例:
1
2zadd myset 1 "a" 2 "b" 3 "c"
zrank myset "b" # 返回 1 - 注意事项:分数低的排前面。
- 推荐使用:查询排名。
zrevrank
- 作用:返回元素从高到低的排名。
- 返回值:
- 整数:排名。
nil:元素不存在。
- 示例:
1
2zadd myset 1 "a" 2 "b" 3 "c"
zrevrank myset "b" # 返回 1 - 注意事项:分数高的排前面。
- 推荐使用:查询逆序排名。
zscore
- 作用:返回元素的分数。
- 返回值:
- 分数值:存在。
nil:不存在。
- 示例:
1
2zadd myset 1 "a" 2 "b"
zscore myset "a" # 返回 "1" - 注意事项:返回字符串格式。
- 推荐使用:查询元素分数。
zrem
- 作用:移除指定元素。
- 返回值:移除的元素数量。
- 示例:
1
2zadd myset 1 "a" 2 "b"
zrem myset "a" "c" # 返回 1("c"不存在) - 注意事项:不存在的元素忽略。
- 推荐使用:删除元素。
7. 哈希(Hash)命令
哈希是一个键值对集合,适合存储对象,字段名唯一且内存占用少。
hset
作用:设置哈希字段的值。
返回值:
1:新增字段。0:更新字段。
示例:
1
2hset myhash name "Alice" # 返回 1
hset myhash name "Bob" # 返回 0注意事项:字段存在时覆盖。
推荐使用:存储对象属性。
新功能说明:自Redis 4.0起,
hset支持设置多个字段值。- 示例:
hset myhash name "Alice" age "25"
- 示例:
hmset
- 作用:同时设置多个字段值。
- 返回值:
OK。 - 示例:
1
hmset myhash name "Alice" age "25" # 返回 "OK"
- 注意事项:Redis 4.0+建议用
hset替代。 - 推荐使用:批量设置字段。
- 替代命令:
- 命令:
hset - 作用:设置单个或多个字段值。
- 示例:
hset myhash name "Alice" age "25" - 说明:功能更灵活,替代
hmset。
- 命令:
hget
- 作用:获取字段值。
- 返回值:
- 值:存在。
nil:不存在。
- 示例:
1
2
3hset myhash name "Alice"
hget myhash name # 返回 "Alice"
hget myhash age # 返回 (nil) - 注意事项:仅适用于哈希。
- 推荐使用:读取单个字段。
hmget
- 作用:获取多个字段值。
- 返回值:值列表。
- 示例:
1
2hmset myhash name "Alice" age "25"
hmget myhash name age # 返回 ["Alice", "25"] - 注意事项:不存在的字段返回
nil。 - 推荐使用:批量读取字段。
hgetall
- 作用:返回所有字段和值。
- 返回值:字段-值对列表。
- 示例:
1
2hmset myhash name "Alice" age "25"
hgetall myhash # 返回 ["name", "Alice", "age", "25"] - 注意事项:数据量大时性能较低。
- 推荐使用:查看哈希全部内容。
hkeys
- 作用:返回所有字段名。
- 返回值:字段列表。
- 示例:
1
2hmset myhash name "Alice" age "25"
hkeys myhash # 返回 ["name", "age"] - 注意事项:键不存在返回空列表。
- 推荐使用:获取字段名。
hvals
- 作用:返回所有字段值。
- 返回值:值列表。
- 示例:
1
2hmset myhash name "Alice" age "25"
hvals myhash # 返回 ["Alice", "25"] - 注意事项:无字段名。
- 推荐使用:获取所有值。
hexists
作用:检查字段是否存在。
返回值:
1:存在。0:不存在。
示例:
1
2
3hset myhash name "Alice"
hexists myhash name # 返回 1
hexists myhash age # 返回 0注意事项:高效查询。
推荐使用:验证字段存在性。
hlen
- 作用:返回字段数量。
- 返回值:
- 整数:数量。
0:键不存在。
- 示例:
1
2hmset myhash name "Alice" age "25"
hlen myhash # 返回 2 - 注意事项:性能高效。
- 推荐使用:统计字段数。
hdel
- 作用:删除指定字段。
- 返回值:删除的字段数量。
- 示例:
1
2
3hmset myhash name "Alice" age "25"
hdel myhash name # 返回 1
hget myhash name # 返回 (nil) - 注意事项:不存在的字段忽略。
- 推荐使用:清理字段。