note-Redis实战2 核心-Redis命令

助记提要
  1. 字符串自增自减命令 5个 加减1;加减整值;加浮点值
  2. 字符串子串处理命令 3个 追加;范围取;范围改
  3. 字符串按位处理命令 4个 按位读;按位改;位计数;位运算
  4. 列表基本命令 7个 左右推;左右取;索引取;范围取;修剪
  5. 列表其他操作命令 4个 阻塞弹出;元素移动
  6. 集合基本命令 8个 添加;移除;存在判断;随机取;元素移动
  7. 集合运算命令 6个 交集;并集;差集;计算并保存到新键
  8. 散列命令 4个 取键值;设置键值;删除键值;计数
  9. 散列高级命令 6个 存在判断;取所有键、取所有值、取所有键值;值做增运算
  10. 有序集合基本命令 8个 添加;移除;取分值;改分值;取排名;计数
  11. 有序集合范围命令 6个 按排名范围取;按分值范围取;按排名范围移除;按分值范围移除
  12. 有序集合运算命令 2个 交集;并集
  13. 发布与订阅命令 5个
  14. Redis发布与订阅的缺点

第二部分 核心

3章 Redis命令

常用命令 排序命令 基本事务命令 过期时间命令

3.1 字符串

字符串可以存储字节串、整数、浮点数。

自增自减命令

存到字符串的值,如果能被解释为整数或浮点数,Redis会允许进行增减操作。

  • INCR/DECR key_name
    使键值增加 / 减小1
  • INCRBY/DECRBY key_name integer_value
    使键值增加 / 减小指定整数
  • INCRBYFLOAT key_name float_value
    使键值增加指定的浮点数

在操作无法解释为数值或范围过大的键时,会发生错误。
操作不存在的键时,会把这个键当做0来操作。

处理子串和二进制位的命令
  • APPEND key_name value
    把指定值 value 追加到键值末尾。
    返回键值当前的总长度。
  • GETRANGE key_name start end
    获取键值从 start 到 end 范围的字符组成的子串,包括 start,end。
    键值的第一位从 0 开始。
  • SETRANGE key_name offset value
    使用 value 覆盖键值从指定的 offset 往后的部分。
    覆盖长度视 value 长度定。
    返回键值当前的总长度。
  • GETBIT key_name offset
    键值视为二进制位串,返回 offset 位置的二进制位的值。
  • SETBIT key_name offset value
    键值视为二进制位串,把 offset 位置的二进制值改为 value。
    返回该位置原先的二进制值。
  • BITCOUNT key_name [start end]
    统计键值(指定范围内)的二进制位串中值为1的数量。
  • BITOP operation result_key_name key_name [key_name ...]
    对一个或多个二进制位串执行位运算。
    operation 可选操作有:并(AND),或(OR),异或(XOR),非(NOT)。

SETRANGE 和 SETBIT 操作的字符串长度不够时,Redis 会拿空字节填充。

3.2 列表

由多个字符串值组成的有序序列。

基本命令
  • RPUSH/LPUSH key_name value [value ...]
    将一个或多个值推入列表右端(左端)。
    返回操作后列表的长度。
  • RPOP/LPOP key_name
    移除并返回列表最右端(左端)的元素。
  • LINDEX key_name offset
    返回列表中偏移量为 offset 的元素。
    offset 可以为负,表示倒着取。offset 超出列表长度,返回空。
  • LRANGE key_name start end
    返回 start 到 end 范围的元素,包括 start 和 end 位置的元素。
    start 和 end 可以为负。
  • LTRIM key_name start end
    修剪列表,仅留下 start 到 end 范围的元素,start 和 end 位置的也会留下。
    start 和 end 可以为负。
    返回操作成功的提示。
阻塞式的弹出以及移动元素的命令
  • BLPOP/BRPOP key_name [key_name ...] timeout
    从第一个非空的列表中弹出最左端(最右端)的元素。
    如果都是空列表,就在 timeout 时间内阻塞并等待可弹出元素。
    返回列表的 key_name 和弹出的元素。
  • RPOPLPUSH source_key dest_key
    弹出 source_key 列表最右端的元素,推到 dest_key 列表的最左端。
    返回这个元素。
  • BRPOPLPUSH source_key dest_key timeout
    功能同 RPOPLPUSH。若 source_key 列表为空,在 timeout 秒等待可弹出元素。

3.3 集合

无序存储多个各不相同的元素。

基本命令
  • SADD key_name item [item ...]
    把元素添加到集合。
    返回成功添加的元素数目。
  • SREM key_name item [item ...]
    从集合移除元素。
    返回移除的元素数目。
  • SISMEMBER key_name item
    查看元素是否在集合内。
  • SCARD key_name
    返回集合的元素数目。
  • SMEMBERS key_name
    返回集合包含的全部元素。
  • SRANDMEMBER key_name [count]
    从集合随机返回一个或多个元素。
    count 为正,返回不重复的元素。count 为负,返回的元素可能重复。
  • SPOP key_name
    随机移除并返回集合的一个元素。
  • SMOVE source_key dest_key item
    从 source_key 移除 item,然后添加到 dest_key 中。
    item 成功移除返回 1,否则返回 0。
组合和关联多个集合的命令
  • SDIFF key_name [key_name ...]
    (差集)返回第一个集合有,其它集合没有的元素。
  • SINTER key_name [key_name ...]
    (交集)返回同时存在于所有集合的元素。
  • SUNION key_name [key_name ...]
    (并集)返回这些集合的并集元素。
  • SDIFFSTORE/SINTERSTORE/SUNIONSTORE dest_key key_name [key_name ...]
    将差集(交集、并集)结果保存到 dest_key 中,返回保存的元素个数。

3.4 散列

存储多个键值对

基本命令
  • HMGET key_name key [key ...]
    从散列获取一个或多个键的值。
  • HMSET key_name key value [key value ...]
    为散列的一个或多个键设置值。
  • HDEL key_name key [key ...]
    删除一个或多个键值对。
    返回删除成功的数目。
  • HLEN key_name
    返回散列中的键值对数量。
高级命令
  • HEXISTS key_name key
    检查给定键是否在散列中。
  • HKEYS/HVALS/HGETALL key_name
    获取散列的所有键(值,键值对)。
  • HINCRBY/HINCRBYFLOAT key_name key increment
    把键存储的值加上整数(浮点数) increment。

散列包含的值很大时,一般先用HKEYS取出所有键,再使用HGET依次取出键的值。

3.5 有序集合

存储成员对应分值的数据,能对分值进行处理,能按分值大小有序地获取或扫描成员和分值。

常用命令
  • ZADD key_name score member [score member ...]
    将带有指定分值的成员加到有序集合。
  • ZREM key_name member [member ...]
    从有序集合移除指定成员。返回移除的成员数量。
  • ZINCRBY key_name increment member
    将指定成员的分值增加 increment。
  • ZSCORE key_name member
    返回成员的分值。
  • ZRANK key_name member
    返回成员在有序集合中的排名。即按分值从小到大排序的成员索引。
  • ZREVRANK key_name member
    功能同 ZRANK,但是按分值从大到小排。
  • ZCARD key_name
    返回有序集合的成员数量。
  • ZCOUNT key_name min max
    返回分值介于 min 和 max 之间的数量。
范围操作命令
  • ZRANGE key_name start stop [WITHSCORES]
    返回排名介于 start 和 stop 之间的成员。
    带有 WITHSCORES 选项的话,分值会一起返回。
  • ZRANGEBYSCORE key_name min max [WITHSCORES] [LIMIT offset count]
    返回分值介于 min 和 max 之间的成员。
  • ZREVRANGE key_name start stop [WITHSCORES]
    功能同 ZRANGE,按分值从大到小排。
  • ZREVRANGEBYSCORE
    功能同 ZRANGEBYSCORE,按分值从大到小顺序返回。
  • ZREMRANGEBYRANK key_name start stop
    移除有序集合中排名介于 start 和 stop 之间的成员。
  • ZREMRANGEBYSCORE key_name min max
    移除有序集合中分值介于 min 和 max 之间的成员。
交集并集命令
  • ZINTERSTORE dest_key numkeys key_name [key_name ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
    对多个有序集合执行类似集合交集的操作,把结果有序集合存在 dest_key 中。
    可选聚合的方式,默认为 SUM,把各个成员的分值相加。
    可以把集合当做参数传入,集合会被当做成员分值都是 1 的有序集合。
  • ZUNIONSTORE dest_key numkeys key_name [key_name ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
    对多个有序集合执行并集操作,把结果有序集合存在 dest_key 中。

3.6 发布与订阅

  • 发布与订阅的特点
    订阅者负责订阅频道,发送者负责向频道发送二进制消息。
    当有消息发送到频道时,所有的订阅者都会收到消息。
发布与订阅命令
  • SUBSCRIBE channel [channel ...]
    订阅一个或多个频道。
  • UNSUBSCRIBE [channel [channel ...]]
    退订一个或多个频道。未指定频道,则退订所有频道。
  • PUBLISH channel message
    向频道发一条消息。
  • PSUBSCRIBE pattern [pattern ...]
    订阅与指定模式匹配的全部频道。
  • PUNSUBSCRIBE [pattern [pattern ...]]
    退订指定模式的频道。未给定模式,则退订所有模式。
Redis发布与订阅的缺点
  1. 客户端只能收到订阅操作之后发布的消息。且客户端在执行订阅的过程中断线,就会丢失断线期间发布的所有消息。
  2. 发布消息时,会把消息推到每个客户端的连接缓冲区。如果消息过大或者客户端收取过慢,消息积压,缓冲区会越来越大,导致 Redis 变慢或崩溃。新版 Redis 可以调整参数 client-output-buffer-limit pubsub 来限制客户端缓冲区的大小,就没有这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值