Redis通用命令
-
KEYS:这条指令用于查找符合给定模板的所有键。例如,如果要查找所有以 “user_” 开头的键,可以使用以下命令:
KEYS user_*
这将返回所有以 “user_” 开头的键的列表。
-
DEL:DEL 指令用于删除指定的键。例如,要删除名为 “user_123” 的键,可以使用以下命令:
DEL user_123
这将删除名为 “user_123” 的键及其关联的值。
-
EXISTS:EXISTS 指令用于检查键是否存在。例如,要检查名为 “user_123” 的键是否存在,可以使用以下命令:
EXISTS user_123
如果键存在,它将返回 1;如果键不存在,它将返回 0。
-
EXPIRE:EXPIRE 指令用于为键设置一个存活时间(过期时间),到期后键会自动被删除。时间以秒为单位。例如,要设置 “user_123” 键的存活时间为 60 秒,可以使用以下命令:
EXPIRE user_123 60
这将使键 “user_123” 在 60 秒后被自动删除。
-
TTL:TTL 指令用于获取键的剩余存活时间(以秒为单位)。例如,要查看 “user_123” 键的剩余存活时间,可以使用以下命令:
TTL user_123
如果键存在且设置了过期时间,它将返回剩余的秒数;如果键不存在或未设置过期时间,它将返回 -1。
String类型的常见命令
-
SET: 设置一个 String 类型的键值对。例如,将键名为 “name” 的键设置为 “John”,可以使用以下命令:
SET name "John"
-
GET: 获取一个 String 类型键的值。例如,要获取键名为 “name” 的键的值,可以使用以下命令:
GET name
如果键存在,它将返回键的值;如果键不存在,它将返回 nil。
-
MSET: 批量设置多个 String 类型的键值对。例如,要同时设置 “name” 和 “age” 两个键的值,可以使用以下命令:
MSET name "John" age "25"
-
MGET: 批量获取多个 String 类型键的值。例如,要获取 “name” 和 “age” 两个键的值,可以使用以下命令:
MGET name age
它将返回一个包含键对应的值的列表。
-
INCR: 将一个整型键的值递增 1。例如,要让键名为 “count” 的键递增 1,可以使用以下命令:
INCR count
-
INCRBY: 将一个整型键的值按指定步长递增。例如,要让键名为 “num” 的键递增 2,可以使用以下命令:
INCRBY num 2
-
INCRBYFLOAT: 将一个浮点型键的值按指定步长递增。例如,要让键名为 “price” 的键递增 0.5,可以使用以下命令:
INCRBYFLOAT price 0.5
-
SETNX: 添加一个 String 类型的键值对,前提是该键不存在。例如,如果要添加键名为 “status”,值为 “active” 的键值对,但只有在 “status” 键不存在时才执行,可以使用以下命令:
SETNX status "active"
如果键不存在,它将设置键值对;如果键已存在,它将不执行任何操作。
-
SETEX: 添加一个带有过期时间的 String 类型的键值对。例如,要添加一个键名为 “token”,值为 “abcd1234” 的键值对,并且设置过期时间为 60 秒,可以使用以下命令:
SETEX token 60 "abcd1234"
在 60 秒后,键 “token” 将会自动被删除。
Hash类型的常见命令
-
HSET: 添加或修改一个 Hash 类型键的字段值。例如,要将键名为 “user” 的 Hash 类型键的 “name” 字段设置为 “John”,可以使用以下命令:
HSET user name "John"
-
HGET: 获取一个 Hash 类型键的字段值。例如,要获取键名为 “user” 的 Hash 类型键的 “name” 字段的值,可以使用以下命令:
HGET user name
如果字段存在,它将返回该字段的值;如果字段不存在,它将返回 nil。
-
HMSET: 批量添加多个 Hash 类型键的字段值。例如,要同时设置 “user” 键的 “name” 和 “age” 字段的值,可以使用以下命令:
HMSET user name "John" age "25"
-
HMGET: 批量获取多个 Hash 类型键的字段值。例如,要获取 “user” 键的 “name” 和 “age” 字段的值,可以使用以下命令:
HMGET user name age
它将返回一个包含字段对应的值的列表。
-
HGETALL: 获取一个 Hash 类型键中的所有字段和值。例如,要获取 “user” 键中的所有字段和值,可以使用以下命令:
HGETALL user
它将返回一个包含所有字段和值的列表,按照字段和值的交替顺序排列。
-
HKEYS: 获取一个 Hash 类型键中的所有字段。例如,要获取 “user” 键中的所有字段,可以使用以下命令:
HKEYS user
它将返回一个包含所有字段的列表。
-
HVALS: 获取一个 Hash 类型键中的所有值。例如,要获取 “user” 键中的所有值,可以使用以下命令:
HVALS user
它将返回一个包含所有值的列表。
-
HINCRBY: 让一个 Hash 类型键的字段值按指定步长递增。例如,要让键名为 “counter” 的键中的字段 “count” 递增 2,可以使用以下命令:
HINCRBY counter count 2
-
HSETNX: 添加一个 Hash 类型键的字段值,前提是该字段不存在。例如,如果要添加 “user” 键的 “email” 字段值为 “john@example.com”,但只有在 “email” 字段不存在时才执行,可以使用以下命令:
HSETNX user email "john@example.com"
如果字段不存在,它将设置字段值;如果字段已存在,它将不执行任何操作。
List类型的常见命令
-
LPUSH: 向列表左侧插入一个或多个元素。例如,要向名为 “mylist” 的列表的左侧插入元素 “apple” 和 “banana”,可以使用以下命令:
LPUSH mylist apple banana
-
LPOP: 移除并返回列表左侧的第一个元素。例如,要从名为 “mylist” 的列表的左侧移除并返回第一个元素,可以使用以下命令:
LPOP mylist
如果列表为空,它将返回 nil。
-
RPUSH: 向列表右侧插入一个或多个元素。例如,要向名为 “mylist” 的列表的右侧插入元素 “orange” 和 “melon”,可以使用以下命令:
RPUSH mylist orange melon
-
RPOP: 移除并返回列表右侧的第一个元素。例如,要从名为 “mylist” 的列表的右侧移除并返回第一个元素,可以使用以下命令:
RPOP mylist
如果列表为空,它将返回 nil。
-
LRANGE: 返回指定范围内的所有元素。例如,要从名为 “mylist” 的列表中获取索引位置 0 到 2 的元素(包括两端),可以使用以下命令:
LRANGE mylist 0 2
它将返回一个包含指定范围内的所有元素的列表。
-
BLPOP 和 BRPOP: 类似于 LPOP 和 RPOP,但在列表为空时等待指定时间,而不是直接返回 nil。例如,要从名为 “mylist” 的列表的左侧或右侧移除并返回第一个元素,并在列表为空时等待 5 秒,可以使用以下命令:
BLPOP mylist 5
如果列表为空,它将等待最多 5 秒,直到有元素可用,然后返回第一个元素。
Set类型的常见命令
-
SADD: 向集合中添加一个或多个元素。例如,要向名为 “myset” 的集合中添加元素 “apple” 和 “banana”,可以使用以下命令:
SADD myset apple banana
-
SREM: 从集合中移除一个或多个指定的元素。例如,要从名为 “myset” 的集合中移除元素 “banana”,可以使用以下命令:
SREM myset banana
-
SCARD: 返回集合中元素的个数。例如,要获取名为 “myset” 的集合中的元素个数,可以使用以下命令:
SCARD myset
它将返回集合中元素的个数。
-
SISMEMBER: 判断一个元素是否存在于集合中。例如,要判断名为 “myset” 的集合中是否存在元素 “apple”,可以使用以下命令:
SISMEMBER myset apple
如果 “apple” 存在于集合中,则返回 1,否则返回 0。
-
SMEMBERS: 获取集合中的所有元素。例如,要获取名为 “myset” 的集合中的所有元素,可以使用以下命令:
SMEMBERS myset
它将返回一个包含集合中所有元素的列表。
-
SINTER: 求多个集合的交集。例如,要求名为 “set1” 和 “set2” 的集合的交集,可以使用以下命令:
SINTER set1 set2
它将返回一个包含交集元素的集合。
-
SDIFF: 求多个集合的差集。例如,要求名为 “set1” 和 “set2” 的集合的差集,可以使用以下命令:
SDIFF set1 set2
它将返回一个包含差集元素的集合。
-
SUNION: 求多个集合的并集。例如,要求名为 “set1” 和 “set2” 的集合的并集,可以使用以下命令:
SUNION set1 set2
它将返回一个包含并集元素的集合。
Set命令的练习
将下列数据用Redis的Set集合来存储:
利用Set的命令实现下列功能:
将李四从张三的好友列表中移除
-
存储数据:
SADD zhangsan 李四 王五 赵六 SADD lisi 王五 麻子 二狗
-
计算张三的好友数量:
SCARD zhangsan
-
计算张三和李四的共同好友:
SINTER zhangsan lisi
-
查询哪些人是张三的好友但不是李四的好友:
SDIFF zhangsan lisi
-
查询张三和李四的好友总共有哪些人:
SUNION zhangsan lisi
-
判断李四是否是张三的好友:
SISMEMBER zhangsan lisi
-
判断张三是否是李四的好友:
SISMEMBER lisi zhangsan
-
将李四从张三的好友列表中移除:
SREM zhangsan lisi
SortedSet类型的常见命令
-
ZADD key score member: 添加一个或多个元素到 Sorted Set,如果已经存在则更新其 score 值。例如,要向名为 “myset” 的 Sorted Set 添加元素 “apple”,score 为 10:
ZADD myset 10 apple
-
ZREM key member: 删除 Sorted Set 中的一个指定元素。例如,要从名为 “myset” 的 Sorted Set 中移除元素 “apple”:
ZREM myset apple
-
ZSCORE key member : 获取 Sorted Set 中的指定元素的 score 值。例如,要获取名为 “myset” 的 Sorted Set 中元素 “apple” 的 score 值:
ZSCORE myset apple
-
ZRANK key member: 获取 Sorted Set 中的指定元素的排名。例如,要获取名为 “myset” 的 Sorted Set 中元素 “apple” 的排名:
ZRANK myset apple
-
ZCARD key: 获取 Sorted Set 中的元素个数。例如,要获取名为 “myset” 的 Sorted Set 中的元素个数:
ZCARD myset
-
ZCOUNT key min max: 统计 score 值在给定范围内的所有元素的个数。例如,要统计名为 “myset” 的 Sorted Set 中 score 值在 1 到 10 之间的元素个数:
ZCOUNT myset 1 10
-
ZINCRBY key increment member: 让 Sorted Set 中的指定元素自增,步长为指定的 increment 值。例如,要让名为 “myset” 的 Sorted Set 中元素 “apple” 的 score 值增加 5:
ZINCRBY myset 5 apple
-
ZRANGE key min max: 按照 score 排序后,获取指定排名范围内的元素。例如,要获取名为 “myset” 的 Sorted Set 中排名在 0 到 2 之间的元素:
ZRANGE myset 0 2
-
ZRANGEBYSCORE key min max: 按照 score 排序后,获取指定 score 范围内的元素。例如,要获取名为 “myset” 的 Sorted Set 中 score 值在 1 到 10 之间的元素:
ZRANGEBYSCORE myset 1 10
-
ZDIFF、ZINTER、ZUNION: 求差集、交集、并集。这些命令用于对多个 Sorted Set 进行操作,返回新的 Sorted Set。例如,求名为 “set1” 和 “set2” 的差集:
ZDIFF output_key set1 set2
SortedSet命令练习
将班级的下列学生得分存入Redis的SortedSet中:
Jack 85, Lucy 89, Rose 82, Tom 95, Jerry 78, Amy 92, Miles 76
查出成绩80分以下的所有同学
# 连接 Redis
redis-cli
# 将学生得分存入 Sorted Set
ZADD class_scores 85 Jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles
# 删除Tom同学
ZREM class_scores Tom
# 获取Amy同学的分数
ZSCORE class_scores Amy
# 获取Rose同学的排名
ZRANK class_scores Rose
# 查询80分以下有几个学生
ZCOUNT class_scores 0 80
# 给Amy同学加2分
ZINCRBY class_scores 2 Amy
# 查出成绩前3名的同学,WITHSCORES 表示同时显示对应分数,而不仅仅是元素名称
ZREVRANGE class_scores 0 2 WITHSCORES
# 查出成绩80分以下的所有同学
ZRANGEBYSCORE class_scores 0 80