I am sorry, but I cannot directly write files to your system. However, I can provide the full content of the article you requested. You can then copy and paste it into a file named redis_commands_explained.md or any other name you prefer.
Here is the article:
一篇文章搞懂所有 Redis 常用命令
Redis 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、带范围查询的排序集合(sorted sets)。了解其常用命令是高效使用 Redis 的关键。
本文将分类详细介绍 Redis 的常用命令,帮助你快速掌握并应用于实际项目中。
1. 通用命令 (Generic Commands)
这些命令适用于任何类型的键。
KEYS pattern
查找所有符合给定模式的 key。
注意:
KEYS命令会遍历所有 key,在生产环境中的大型数据库上使用时要非常小心,可能会阻塞服务器。
“`shell
查找所有 key
KEYS *
查找以 “user:” 开头的所有 key
KEYS user:*
“`
EXISTS key
检查给定 key 是否存在。
shell
SET name "redis"
EXISTS name # (integer) 1
EXISTS non_existing_key # (integer) 0
DEL key [key ...]
删除一个或多个 key。
shell
DEL name
DEL user:1 user:2
EXPIRE key seconds
为给定 key 设置过期时间(以秒为单位)。
shell
SET session "data"
EXPIRE session 3600 # 1小时后过期
TTL key
以秒为单位,返回给定 key 的剩余生存时间。
– -1: 表示 key 永不过期。
– -2: 表示 key 不存在。
shell
TTL session # (integer) 3599
TYPE key
返回 key 所储存的值的类型。
“`shell
SET mykey “value”
TYPE mykey # string
LPUSH mylist “item”
TYPE mylist # list
“`
2. 字符串 (String)
字符串是 Redis 最基本的数据类型,可以包含任何数据,比如 jpg 图片或者序列化的对象,最大能存储 512MB。
SET key value
设置指定 key 的值。
shell
SET mykey "Hello Redis"
GET key
获取指定 key 的值。
shell
GET mykey # "Hello Redis"
GETSET key value
将给定 key 的值设为 value,并返回 key 的旧值。
shell
GETSET mykey "New Value" # "Hello Redis"
GET mykey # "New Value"
MSET key value [key value ...]
同时设置一个或多个 key-value 对。
shell
MSET key1 "v1" key2 "v2" key3 "v3"
MGET key [key ...]
获取所有给定 key 的值。
shell
MGET key1 key2 key3 # 1) "v1", 2) "v2", 3) "v3"
INCR key / DECR key
将 key 中储存的数字值增一或减一。如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执行操作。
shell
SET counter 100
INCR counter # (integer) 101
DECR counter # (integer) 100
STRLEN key
返回 key 所储存的字符串值的长度。
shell
STRLEN mykey # (integer) 9
3. 列表 (List)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
LPUSH key element [element ...] / RPUSH key element [element ...]
将一个或多个值插入到列表头部(左侧)或尾部(右侧)。
“`shell
LPUSH mylist “world”
LPUSH mylist “hello” # 列表内容: [“hello”, “world”]
RPUSH mylist “!” # 列表内容: [“hello”, “world”, “!”]
“`
LPOP key / RPOP key
移除并获取列表的第一个元素(左侧)或最后一个元素(右侧)。
shell
LPOP mylist # "hello"
RPOP mylist # "!"
LLEN key
获取列表的长度。
shell
LLEN mylist # (integer) 1
LRANGE key start stop
获取列表指定范围内的元素。索引 0 表示第一个元素,-1 表示最后一个元素。
“`shell
假设 mylist 内容为: [“a”, “b”, “c”, “d”]
LRANGE mylist 0 2 # 1) “a”, 2) “b”, 3) “c”
LRANGE mylist 0 -1 # 获取所有元素
“`
LINDEX key index
通过索引获取列表中的元素。
shell
LINDEX mylist 1 # "b"
4. 哈希 (Hash)
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
HSET key field value
将哈希表 key 中的字段 field 的值设为 value。
shell
HSET user:1 name "Alice" email "[email protected]"
HGET key field
获取存储在哈希表中指定字段的值。
shell
HGET user:1 name # "Alice"
HGETALL key
获取在哈希表中指定 key 的所有字段和值。
shell
HGETALL user:1 # 1) "name", 2) "Alice", 3) "email", 4) "[email protected]"
HDEL key field [field ...]
删除一个或多个哈希表字段。
shell
HDEL user:1 email
HLEN key
获取哈希表中字段的数量。
shell
HLEN user:1 # (integer) 1
HEXISTS key field
查看哈希表的指定字段是否存在。
shell
HEXISTS user:1 name # (integer) 1
HEXISTS user:1 email # (integer) 0
5. 集合 (Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
SADD key member [member ...]
向集合添加一个或多个成员。
shell
SADD myset "a" "b" "c" "a"
SMEMBERS key
返回集合中的所有成员。
shell
SMEMBERS myset # 1) "c", 2) "a", 3) "b" (顺序是无序的)
SISMEMBER key member
判断 member 元素是否是集合 key 的成员。
shell
SISMEMBER myset "b" # (integer) 1
SISMEMBER myset "d" # (integer) 0
SREM key member [member ...]
移除集合中一个或多个成员。
shell
SREM myset "c"
SCARD key
获取集合的成员数。
shell
SCARD myset # (integer) 2
SINTER key [key ...] / SUNION key [key ...] / SDIFF key [key ...]
SINTER: 返回给定所有集合的交集。SUNION: 返回给定所有集合的并集。SDIFF: 返回给定所有集合的差集。
shell
SADD set1 "a" "b" "c"
SADD set2 "b" "c" "d"
SINTER set1 set2 # 1) "b", 2) "c"
6. 有序集合 (Sorted Set / ZSET)
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
ZADD key score member [score member ...]
向有序集合添加一个或多个成员,或者更新已存在成员的分数。
shell
ZADD myzset 1 "one" 2 "two" 3 "three"
ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合成指定区间内的成员。成员按 score 值递增排序。
shell
ZRANGE myzset 0 -1 # 1) "one", 2) "two", 3) "three"
ZRANGE myzset 0 -1 WITHSCORES # 1) "one", 2) "1", 3) "two", 4) "2", ...
ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,分数从高到底。
shell
ZREVRANGE myzset 0 -1 # 1) "three", 2) "two", 3) "one"
ZRANGEBYSCORE key min max [WITHSCORES]
通过分数返回有序集合指定区间内的成员。
“`shell
返回分数在 1 到 2 之间的成员
ZRANGEBYSCORE myzset 1 2 # 1) “one”, 2) “two”
“`
ZCARD key
获取有序集合的成员数。
shell
ZCARD myzset # (integer) 3
ZSCORE key member
返回有序集中,成员的分数值。
shell
ZSCORE myzset "two" # "2"
ZREM key member [member ...]
移除有序集合中的一个或多个成员。
shell
ZREM myzset "two"
总结
以上是 Redis 中最核心和常用的命令。掌握了这些命令,你就可以应对大部分的缓存和数据存储需求。Redis 的功能远不止于此,还有发布/订阅、事务、脚本等高级功能,但以上命令是你构建高效 Redis 应用的坚实基础。希望这篇文章能帮助你更好地理解和使用 Redis。