【Redis】Redis命令(二)

1.Hash 型操作命令

        Hash 表就是一个映射表 Map,由键值对构成,为和DB的 key 进行区分,Hash的键称为 field,值称为 value。field-value 对均为 String 类型

     1.1.hset

        1)命令:HSET key field value

        2)功能:将key 中的 field 值设为 value,如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作,若存在则覆盖旧值。如果 field 是哈希表中的一个新建域,并且值设置成功,返回 1 。如果哈希表中域 field 已经存在且旧值已被新值覆盖,返回 0

     1.2.hget

        1)命令:HGET key field

        2)功能:返回给定key 中给定field 的值

     1.3.hmset

        1)命令:HMSET key field value [field value ...]

        2)功能:同时将多个 field-value对设置到 key 中,已存在则覆盖

     1.4.hmget

        1)命令:HMGET key field [field ...]

        2)功能:按照给出顺序返回哈希表 key 中一个或多个域的值

     1.5.hgetall

        1)命令:HGETALL key

        2)功能:返回key 中所有的域和值,若 key 不存在,返回空列表。若 key 中包含大量元素,则该命令可能会阻塞 Redis 服务。所以生产环境中一般不使用该命令,而使用 hscan 命令代替

     1.6.hsetnx

        1)命令:HSETNX key field value        

        2)功能:将 key 中的 field 的值设置为 value ,当且仅当域 field 不存在

     1.7.hdel

        1)命令:HDEL key field [field ...]

        2)功能:删除 key 中的一个或多个指定域,不存在的域将被忽略

     1.8.hexits

        1)命令:HEXISTS key field

        2)功能:查看 key 中给定域 field 是否存在

     1.9.hincrby 与 hincrbyfloat

        1)命令:HINCRBY key field increment

        2)功能:为哈希表 key 中的域 field 的值加上增量 increment 。hincrby 命令只能增加整数值,而 hincrbyfloat 可以增加小数值。增量也可以为负数

     1.20.hkeys 与 hvals

        1)命令:HKEYS key 或 HVALS key

        2)功能:返回 key 中的所有域/值

     1.21.hlen

        1)命令:HLEN key

        2)功能:返回 key 中域的数量

     1.22.hstrlen

        1)命令:HSTRLEN key field

        2)功能:返回哈key 中, 与给定域 field 相关联的值的字符串长度

     1.23.应用场景

·        Hash 型 Value 非常适合存储对象数据。key 为对象名称,value 为描述对象属性的 Map, 对对象属性的修改在 Redis 中就可直接完成。

2.List 型操作命令

        列表中的数据会按照插入顺序进行排序。列表的底层实际是一个 无头节点的双向链表,所以对列表表头与表尾的操作性能较高,但对中间元素的插入与删除的操作的性能相对较差。

     2.1.lpush/rpush

        1)命令:LPUSH key value [value ...] 或 RPUSH key value [value ...]

        2)功能:将一个或多个值 value 插入到列表 key 的表头/表尾。如果有多个 value 值,对于 lpush 来说,各个 value 会按从左到右的顺序依次插 入到表头;对于 rpush 来说,各个 value 会按从左到右的顺序依次插入到表尾

     2.2.llen

        1)命令:LLEN key

        2)功能:返回 key中列表的长度

     2.3.lindex

        1)命令:LLEN key

        2)功能:返回 key中列表的长度

     2.4.lset

        1)命令:LSET key index value

        2)功能:将 key 下标为 index 的元素的值设置为 value

     2.5.lrange

        1)命令:LRANGE key start stop

        2)返回 key 中指定区间[start, stop]内的元素,即包含两个端点

     2.6.lpushx 与 rpushx

        1)命令:LPUSHX key value 或 RPUSHX key value

        2)功能:将值 value 插入到 key 的表头/表尾,当且仅当 key 存在并且是一个列表

     2.7.linsert

        1)命令:LINSERT key BEFORE|AFTER pivot value

        2)功能:将值 value 插入到 key 当中,位于元素 pivot 之前或之后

     2.8.lpop / rpop

        1)命令:LPOP key [count] 或 RPOP key [count]

        2)功能:从列表 key 的表头/表尾移除 count 个元素,并返回移除的元素。count 默认值 1

     2.9.blpop / brpop

        1)命令:BLPOP key [key ...] timeout 或 BRPOP key [key ...] timeout

        2)功能:BLPOP/BRPOP 是列表的阻塞式(blocking)弹出命令。它们是 LPOP/RPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP/BRPOP 命令阻 塞,直到等待 timeout 超时或发现可弹出元素为止。当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。timeout 为阻塞时长, 单位为秒,其值若为 0,则表示只要没有可弹出元素,则一直阻塞。若在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长,反之返回被弹出元素所属的 key和被 弹出元素的值

     2.10.rpoplpush

        1)命令:RPOPLPUSH source destination

        2)功能:在一个原子时间内,将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端,然后将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。如果 source 不存在,返回值 nil,并且不执行其他动作。如果 source 和 destination 相同,则列表中的表尾元素被移动到表头

     2.11.brpoplpush

        1)命令:BRPOPLPUSH source destination timeout

        2)功能:RPOPLPUSH 的阻塞版本,当给定列表 source 不为空时, BRPOPLPUSH 的表现和 RPOPLPUSH 一样。当列表 source 为空时, BRPOPLPUSH 命令将阻塞连接,直到等待超时,或有另一个客户端对 source 执行 LPUSH 或 RPUSH 命令 为止。timeout 为阻塞时长,单位为秒,其值若为 0,则表示只要没有可弹出元素,则 一直阻塞。假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。反之返回被弹出元素的值和等待时长

     2.12.lrem

        1)命令:LREM key count value

        2)功能:根据参数 count 的值,移除列表中与参数 value 相等的元素。若:count > 0 , 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count;count < 0 :,从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的 绝对值;count = 0 : 移除表中所有与 value 相等的值

     2.13.ltrim

        1)命令:LTRIM key start stop

        2)功能:让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。0 表示列表的第一 个元素,-1 表示 列表的最后一个元素。start > stop 返回一个空列表,stop 下标比 end 下标还要大Redis 将 stop 的值设置为 end(LLEN list 减去 1)

     2.14.应用场景

        1)栈:通过 lpush + lpop 可以实现栈数据结构效果,左侧操作;rpush + rpop实现右侧操作

        2)队列:通过 lpush + rpop 可以实现队列数据结构效果,左进右出;rpush + lpop相反

        3)阻塞式消息队列:通过 lpush + brpop 可以实现阻塞式消息队列效果。brpop 的 timeout 设置为 0,只要没有数据可弹出,就永久阻塞

        4)动态有限集合:通过 lpush + ltrim 可以实现有限集合,通过ltrim保持集合的动态有限性,如末尾淘汰制;rpush + ltrim操作方向相反

3.Set 型操作命令

     3.1.sadd

        1)命令:SADD key member [member ...]

        2)功能:将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略

     3.2.smembers

        1)命令:SMEMBERS key

        2)功能:返回集合 key 中的所有成员。若 key 中包含大量元素,可能会阻塞服务,所以一般不使用该命令,而使用 sscan 命令代替

     3.3.scard

        1)命令:SCARD key

        2)功能:返回 Set 集合的长度

     3.4.sismember

        1)命令:SISMEMBER key member

        2)功能:判断 member 元素是否集合 key 的成员

     3.5.smove

        1)命令:SMOVE source destination member

        2)功能:将 member 元素从 source 集合移动到 destination 集合,并从source集合中移除。如果 source 集合不存在或不包含指定的 member 元素,则不执行任何操作。当 destination 集合已经包含 member 元素时,仅将 source 集合中的 member 元素删除

     3.6.srem

        1)命令:SREM key member [member ...]

        2)功能:移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略,且返回成功移除的元素个数

     3.7.srandmember

        1)命令:SRANDMEMBER key [count]

        2)功能:返回集合中的 count 个随机元素。count 默认值为 1。若 count 为正数,且小于集合长度,那么返回一个包含 count 个元素的数组, 数组中的元素各不相同;如果 count 大于等于集合长度,那么返回整个集合; count 为负数,那么返回一个包含 count 绝对值个元素的数组,但数组中的元素可能会出现重复

      3.8.spop

        1)命令:SPOP key [count]

        2)功能:移除并返回集合中的 count 个随机元素。count 必须为正数,且默认值为 1。如果 count 大于等于集合长度,那么移除并返回整个集合

     3.9.sdiff / sdiffstore

        1)命令:SDIFF key [key ...] 或 SDIFFSTORE destination key [key ...]

        2)功能:返回第一个集合与其它集合之间的差集。sdiffstore 不仅能够显示差集,还能将差集存储到指定的集合 destination 中。如果 destination 集合已经存在,则将其覆盖

     3.10.sinter / sinterstore

        1)命令:SINTER key [key ...] 或 SINTERSTORE destination key [key ...]

        2)功能:返回多个集合间的交集。sinterstore 不仅能够显示交集,还能将交集存储到指定的集合 destination 中。如果 destination 集合已经存在,则将其覆盖

     3.11.sunion / sunionstore

        1)命令:SUNION key [key ...] 或 SUNIONSTORE destination key [key ...]

        2)功能:返回多个集合间的并集。sunionstore 不仅能够显示并集,还能将并集存储到 指定的集合 destination 中。如果 destination 集合已经存在,则将其覆盖

     3.12.应用场景

        1)动态黑白名单

        2)有限随机数:通过 spop 或 srandmember 可以实现从指定集合中随机选出元素,实现抽奖等

        3)用户画像:根据用户提供的资料与用户使用习惯,为每个用户定义很多可以反映该用户特征的标签,这些标签就可以使用 sadd 添加到该用户对应的集合中。还可以使用 sinter/sinterstore 根据用户画像间的交集进行好友推荐、商品推荐、 客户推荐等

        

        

  • 33
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值