Redis 常用命令汇总
核心概念
- Redis 是一个键值对数据库,所有数据都有一个唯一的 key。
- 命令不区分大小写,但通常使用大写。
- key 和 value 都是二进制安全的,意味着你可以用任何二进制序列作为键值。
1. 键(Key)通用命令
这些命令不关心值的数据类型,适用于所有键。
|
命令 |
描述 |
示例 |
|
DEL key [key ...] |
删除一个或多个键 |
DEL name age |
|
EXISTS key |
检查一个键是否存在 |
EXISTS name |
|
EXPIRE key seconds |
为键设置过期时间(秒) |
EXPIRE session_id 3600 |
|
TTL key |
查看键的剩余生存时间(秒) |
TTL session_id |
|
PERSIST key |
移除键的过期时间,使其永久有效 |
PERSIST session_id |
|
KEYS pattern |
查找所有符合给定模式 pattern 的键 |
KEYS user:* |
|
TYPE key |
返回键所存储的值的类型 |
TYPE mylist |
|
RENAME key newkey |
重命名键 |
RENAME old_name new_name |
|
RENAMENX key newkey |
仅当新键名不存在时,重命名键 |
RENAMENX old_name new_name |
|
MOVE key db |
将当前数据库的键移动到指定数据库 |
MOVE key 1 (移动到1号DB) |
|
RANDOMKEY |
从当前数据库中随机返回一个键 |
RANDOMKEY |
2. 字符串(String)
字符串是 Redis 最基本的数据类型,可以包含任何数据,如文本、数字(整数/浮点数)或二进制数据(如图片)。
|
命令 |
描述 |
示例 |
|
SET key value |
设置指定键的值 |
SET username "alice" |
|
GET key |
获取指定键的值 |
GET username |
|
GETSET key value |
设置新值并返回旧值 |
GETSET counter 100 |
|
MSET key value [key value ...] |
同时设置多个键值对 |
MSET k1 v1 k2 v2 |
|
MGET key [key ...] |
获取所有给定键的值 |
MGET k1 k2 |
|
SETNX key value |
只有在键不存在时才设置 |
SETNX lock_key "1" (用于分布式锁) |
|
INCR key |
将键存储的整数值增加 1 |
INCR page_views |
|
DECR key |
将键存储的整数值减少 1 |
DECR inventory |
|
INCRBY key increment |
将键存储的值增加指定的整数 |
INCRBY balance 100 |
|
DECRBY key decrement |
将键存储的值减少指定的整数 |
DECRBY balance 50 |
|
INCRBYFLOAT key increment |
将键存储的值增加指定的浮点数 |
INCRBYFLOAT price 2.5 |
|
APPEND key value |
如果键已存在且是字符串,则将值追加到末尾 |
APPEND greeting " World!" |
|
STRLEN key |
返回键所存储的字符串值的长度 |
STRLEN username |
3. 哈希(Hash)
哈希是键值对的集合,非常适合存储对象(如用户信息)。
|
命令 |
描述 |
示例 |
|
HSET key field value |
设置哈希表中字段的值 |
HSET user:1000 name "Bob" |
|
HGET key field |
获取哈希表中字段的值 |
HGET user:1000 name |
|
HMSET key field value [field value ...] |
同时设置多个字段(新版 HSET 已支持) |
HMSET user:1000 age 30 city NYC |
|
HMGET key field [field ...] |
获取所有给定字段的值 |
HMGET user:1000 name age |
|
HGETALL key |
获取哈希表中所有的字段和值 |
HGETALL user:1000 |
|
HDEL key field [field ...] |
删除一个或多个哈希表字段 |
HDEL user:1000 city |
|
HEXISTS key field |
查看哈希表中指定的字段是否存在 |
HEXISTS user:1000 name |
|
HKEYS key |
获取哈希表中的所有字段名 |
HKEYS user:1000 |
|
HVALS key |
获取哈希表中的所有值 |
HVALS user:1000 |
|
HINCRBY key field increment |
为哈希表中的整数值字段增加整数增量 |
HINCRBY user:1000 age 1 |
|
HLEN key |
获取哈希表中字段的数量 |
HLEN user:1000 |
4. 列表(List)
列表是简单的字符串列表,按照插入顺序排序。你可以在列表的头部(左边)或尾部(右边)添加元素。
|
命令 |
描述 |
示例 |
|
LPUSH key value [value ...] |
将一个或多个值插入到列表头部 |
LPUSH mylist "world" |
|
RPUSH key value [value ...] |
将一个或多个值插入到列表尾部 |
RPUSH mylist "hello" |
|
LPOP key |
移除并获取列表的第一个元素 |
LPOP mylist |
|
RPOP key |
移除并获取列表的最后一个元素 |
RPOP mylist |
|
LRANGE key start stop |
获取列表指定范围内的元素 |
LRANGE mylist 0 -1 (获取全部) |
|
LLEN key |
获取列表长度 |
LLEN mylist |
|
LINDEX key index |
通过索引获取列表中的元素 |
LINDEX mylist 1 |
|
LREM key count value |
移除列表中与值相等的元素 |
LREM mylist 1 "hello" |
|
LSET key index value |
通过索引设置列表元素的值 |
LSET mylist 0 "new" |
|
LTRIM key start stop |
对一个列表进行修剪,只保留指定区间内的元素 |
LTRIM mylist 0 2 |
5. 集合(Set)
集合是 String 类型的无序集合,集合成员是唯一的,不允许重复。
|
命令 |
描述 |
示例 |
|
SADD key member [member ...] |
向集合添加一个或多个成员 |
SADD tags "redis" "db" |
|
SREM key member [member ...] |
移除集合中一个或多个成员 |
SREM tags "db" |
|
SMEMBERS key |
返回集合中的所有成员 |
SMEMBERS tags |
|
SISMEMBER key member |
判断 member 元素是否是集合的成员 |
SISMEMBER tags "redis" |
|
SCARD key |
获取集合的成员数 |
SCARD tags |
|
SINTER key [key ...] |
返回给定所有集合的交集 |
SINTER set1 set2 |
|
SUNION key [key ...] |
返回所有给定集合的并集 |
SUNION set1 set2 |
|
SDIFF key [key ...] |
返回第一个集合与其他集合之间的差集 |
SDIFF set1 set2 |
|
SPOP key [count] |
移除并返回集合中的一个或多个随机元素 |
SPOP tags 1 |
|
SRANDMEMBER key [count] |
返回集合中一个或多个随机数,但不移除 |
SRANDMEMBER tags |
6. 有序集合(Sorted Set / ZSet)
有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数(score)。Redis 正是通过分数来为集合中的成员进行从小到大的排序。
|
命令 |
描述 |
示例 |
|
ZADD key [NXXX] [CH] [INCR] score member [score member ...] |
向有序集合添加一个或多个成员,或更新已存在成员的分数。 |
ZADD leaderboard 100 "player1" |
|
ZRANGE key start stop [WITHSCORES] |
通过索引区间返回有序集合指定区间内的成员(低到高) |
ZRANGE leaderboard 0 2 WITHSCORES |
|
ZREVRANGE key start stop [WITHSCORES] |
返回有序集中指定区间内的成员,通过索引,分数从高到低 |
ZREVRANGE leaderboard 0 2 |
|
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
通过分数返回有序集合指定区间内的成员 |
ZRANGEBYSCORE leaderboard 50 200 |
|
ZREM key member [member ...] |
移除有序集合中的一个或多个成员 |
ZREM leaderboard "player1" |
|
ZSCORE key member |
返回有序集中,成员的分数值 |
ZSCORE leaderboard "player1" |
|
ZRANK key member |
返回有序集合中指定成员的索引(排名,从0开始,低到高) |
ZRANK leaderboard "player1" |
|
ZREVRANK key member |
返回有序集合中指定成员的索引(排名,从0开始,高到低) |
ZREVRANK leaderboard "player1" |
|
ZCARD key |
获取有序集合的成员数 |
ZCARD leaderboard |
|
ZCOUNT key min max |
计算在有序集合中指定区间分数的成员数 |
ZCOUNT leaderboard 50 100 |
|
ZINCRBY key increment member |
有序集合中对指定成员的分数加上增量 |
ZINCRBY leaderboard 15 "player1" |
7. 发布订阅(Pub/Sub)
用于消息通信的模式。
|
命令 |
描述 |
示例 |
|
SUBSCRIBE channel [channel ...] |
订阅一个或多个频道 |
SUBSCRIBE news |
|
PUBLISH channel message |
将信息发送到指定的频道 |
PUBLISH news "hello world" |
|
UNSUBSCRIBE [channel ...] |
退订一个或多个频道 |
UNSUBSCRIBE news |
|
PSUBSCRIBE pattern [pattern ...] |
订阅一个或多个符合给定模式的频道 |
PSUBSCRIBE news.* |
8. 事务
Redis 事务允许在一次单独的步骤中执行一组命令。
|
命令 |
描述 |
示例 |
|
MULTI |
标记一个事务块的开始 |
MULTI |
|
EXEC |
执行所有事务块内的命令 |
EXEC |
|
DISCARD |
取消事务,放弃执行事务块内的所有命令 |
DISCARD |
|
WATCH key [key ...] |
监视一个或多个键,如果在事务执行前这个键被其他命令改动,则事务将被打断 |
WATCH balance |
|
UNWATCH |
取消 WATCH 命令对所有键的监视 |
UNWATCH |
9. 服务器管理与其他
|
命令 |
描述 |
示例 |
|
PING |
测试连接是否存活 |
PING |
|
ECHO message |
打印字符串 |
ECHO "Hello" |
|
SELECT index |
切换到指定的数据库 |
SELECT 1 (切换到1号DB) |
|
AUTH password |
验证服务器密码 |
AUTH mypassword |
|
INFO [section] |
获取 Redis 服务器的各种信息和统计数值 |
INFO server |
|
CLIENT LIST |
获取连接到服务器的客户端连接列表 |
CLIENT LIST |
|
FLUSHDB |
清空当前数据库 |
FLUSHDB |
|
FLUSHALL |
清空所有数据库 |
FLUSHALL |
|
SAVE |
同步保存数据到磁盘 |
SAVE |
|
BGSAVE |
在后台异步保存当前数据库的数据到磁盘 |
BGSAVE |
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/19179726

浙公网安备 33010602011771号