Redis基础语法大全:核心数据类型与操作详解
- [一、 通用命令(通用操作)](#一、 通用命令(通用操作))
- [二、 字符串(String)](#二、 字符串(String))
- [三、 哈希(Hash)](#三、 哈希(Hash))
- [四、 列表(List)](#四、 列表(List))
- [五、 集合(Set)](#五、 集合(Set))
- [六、 有序集合(ZSet)](#六、 有序集合(ZSet))
- 总结
Redis 不仅仅是一个键值对存储系统,它支持多种灵活的数据结构。掌握这些基础语法是使用 Redis 的第一步。以下命令均基于 Redis 原生命令,适用于绝大多数版本。
一、 通用命令(通用操作)
这类命令不针对特定数据类型,主要用于管理键(Key)的生命周期和查看服务器状态。
- exists key :判断某个键是否存在。
- 示例:
EXISTS mykey(返回 1 表示存在,0 表示不存在)
- 示例:
- del key :删除指定的键。
- 示例:
DEL mykey
- 示例:
- expire key seconds :为键设置过期时间(单位:秒)。
- 示例:
EXPIRE mykey 60(设置 mykey 在 60 秒后自动过期)
- 示例:
- ttl key :查看键的剩余生存时间。
- 示例:
TTL mykey(返回 -1 表示永不过期,-2 表示键不存在)
- 示例:
- type key :查看键的数据类型。
- 示例:
TYPE mykey(返回 string, list, hash 等)
- 示例:
二、 字符串(String)
这是 Redis 最基础的数据类型,不仅支持文本,还支持数字和二进制数据。它是构建计数器、缓存对象的首选。
- set key value :设置指定键的值。
- 示例:
SET name "Tom"
- 示例:
- get key :获取指定键的值。
- 示例:
GET name
- 示例:
- mset key1 value1 key2 value2 :批量设置键值对。
- 示例:
MSET age 20 city "Beijing"
- 示例:
- mget key1 key2 :批量获取键的值。
- 示例:
MGET name age
- 示例:
- incr key :将键的值自增 1(仅限数字)。
- 示例:
INCR click_count
- 示例:
- decr key :将键的值自减 1(仅限数字)。
- 示例:
DECR stock
- 示例:
三、 哈希(Hash)
哈希是一个键值对集合,非常适合存储对象(如用户信息),可以看作是 Redis 中的"表"。
- hset key field value :设置哈希表中某个字段的值。
- 示例:
HSET user:1001 username "Jerry"
- 示例:
- hget key field :获取哈希表中指定字段的值。
- 示例:
HGET user:1001 username
- 示例:
- hmset key field1 value1 field2 value2 :批量设置哈希表的多个字段。
- 示例:
HMSET user:1001 age 25 gender "Male"
- 示例:
- hmget key field1 field2 :批量获取哈希表的多个字段值。
- 示例:
HMGET user:1001 username age gender
- 示例:
- hgetall key :获取哈希表中所有的字段和值。
- 示例:
HGETALL user:1001
- 示例:
- hdel key field :删除哈希表中的一个或多个字段。
- 示例:
HDEL user:1001 age
- 示例:
四、 列表(List)
列表是简单的字符串链表,按照插入顺序排序。它支持在头部(左边)或尾部(右边)插入和弹出数据,适合实现消息队列。
- lpush key value :将一个值插入到列表的头部(左边)。
- 示例:
LPUSH queue task1
- 示例:
- rpush key value :将一个值插入到列表的尾部(右边)。
- 示例:
RPUSH queue task2
- 示例:
- lrange key start stop :获取列表指定范围内的元素(0 到 -1 表示获取全部)。
- 示例:
LRANGE queue 0 -1
- 示例:
- lpop key :移除并获取列表的第一个元素(左边弹出)。
- 示例:
LPOP queue
- 示例:
- rpop key :移除并获取列表的最后一个元素(右边弹出)。
- 示例:
RPOP queue
- 示例:
五、 集合(Set)
集合是无序且不重复的字符串集合。利用它的唯一性,常用于去重、抽奖或共同好友计算。
- sadd key member :向集合中添加一个或多个成员。
- 示例:
SADD tags "redis" "database"
- 示例:
- smembers key :获取集合中的所有成员。
- 示例:
SMEMBERS tags
- 示例:
- sismember key member :判断某个成员是否存在于集合中。
- 示例:
SISMEMBER tags "redis"
- 示例:
- srem key member :移除集合中的一个或多个成员。
- 示例:
SREM tags "database"
- 示例:
- srandmember key :随机取出一个成员(不删除)。
- 示例:
SRANDMEMBER users
- 示例:
六、 有序集合(ZSet)
有序集合在集合的基础上增加了"分数(Score)"的概念,元素会根据分数自动排序,适合做排行榜。
- zadd key score member :向有序集合添加一个成员及其分数。
- 示例:
ZADD rankings 100 "PlayerA"
- 示例:
- zrange key start stop [WITHSCORES] :获取指定范围内的成员(按分数从小到大)。
- 示例:
ZRANGE rankings 0 -1 WITHSCORES(获取所有成员及分数)
- 示例:
- zrevrange key start stop :获取指定范围内的成员(按分数从大到小,即降序)。
- 示例:
ZREVRANGE rankings 0 9(获取前十名)
- 示例:
- zscore key member :获取某个成员的分数。
- 示例:
ZSCORE rankings "PlayerA"
- 示例:
总结
以上涵盖了 Redis 最核心的五种数据结构及其基础命令:
- String:用于简单的键值对存储。
- Hash:用于存储对象信息。
- List:用于序列化数据和消息队列。
- Set:用于去重和集合运算。
- ZSet:用于需要排序的场景(如排行榜)。