Step into Redis- 04 – 复杂数据类型

释放双眼,带上耳机,听听看~!

目录

摘要

哈希表(单条与多条数据存取,获取所有键或值,删除指定键),列表(尾部追加与获取,弹出与压入,阻塞命令),集合(添加与获取),有序集合(添加与获取,删除,score)

复杂数据类型

哈希表

概述

  • 哈希表用于实现类似对象的功能,从而避免使用不自然的前缀来存储数据。
  • 哈希表的命令通常以字母 “H” 开头

使用

创建哈希表

格式

<HSET | HMSET> key field value

以上即为创建一个以 “key” 命名的哈希表,值为 “field-value” 的键值对。


1
2
3
1HMSET user:peter name &quot;Peter Pan&quot; password zxcf
2HSET user:peter no 1
3

获取所有键

HKEYS key


1
2
1HKEYS user:peter
2

获取所有值

HVALS key


1
2
1HVALS user:peter
2

获得指定键值


1
2
1HGET user:peter password
2

获得键值数


1
2
1HLEN user:peter
2

删除指定键


1
2
1HDEL user:peter no
2

递增指定键值

HINCRBY key field increment


1
2
1HINCRBY user:peter no 10
2

列表 List

概述

列表的大部分命令以 “L” 开头。

普通列表

从尾部追加


1
2
1RPUSH peter:wishlist tv 3ds psp
2

获得长度


1
2
1HLEN peter:wishlist
2

获取指定范围的值

LRANGE key from to


1
2
1LRANGE peter:wishlist 0 -1
2

索引从 “0” 开始,负数表示从尾部开始算起,都是闭区间

删除指定值

删除指定数目的匹配值

LREM key count value

count 为 “0” 的话表示删除所有匹配的,为负数表示从尾部开始算起


1
2
1LREM peter:wishlist 0 3ds
2

获取并弹出头部


1
2
1LPOP peter:wishlist
2

弹出并压入

从一个列表中的尾部弹出,追加到另一个列表的头部

RPOPLPUSH from to


1
2
1RPOPLPUSH peter:wishlist peter:giveuplist
2

阻塞列表

BRPOP

监听阻塞队列

BRPOP key timeout

timeout 单位为 “秒”,直到接收到消息或超时该命令会一直进行阻塞


1
2
1BRPOP comments 300
2

这时在其它控制台向 “comments” 压入消息后,监听者会显示收到的消息键值对和耗时


1
2
1LPUSH comments &quot;hello&quot;
2

其它命令

除了 BRPOP 还有 BLPOP 和 BRPOPLPUSH 版本。

集合 Set

概述

列表的大部分命令以 “S” 开头。无序且不重复。

普通集合

添加到集合

SADD key member [member …]


1
2
1SADD news times.com blog.com
2

获取集合的值


1
2
1SMEMBERS news
2

获取交集


1
2
1 SINTER news tech
2

获取并存储到新的集合中


1
2
1SINTERSTORE websites news tech
2

获取差集

获取的是前一个和后一个不同的值


1
2
1SDIFF news tech
2

获取并存储到新的集合中


1
2
1SDIFFSTORE websites news tech
2

获取并集


1
2
1SUNION news tech
2

获取并存储到新的集合中


1
2
1SUNIONSTORE websites news tech
2

其它命令

  • SMOVE 将值从一个集合移到另一个集合
  • SCARD 获取集合长度
  • SPOP 弹出一个随机值
  • SREM 删除指定的值

有序集合

概述

有序集合像列表一样有序,像集合一样没有重复,像哈希表一样拥有键,只是键只能为整型,代表值的位置

添加到列表

ZADD key score member [score member …]


1
2
1ZADD words 1 a 26 z 9 i 3 c
2

递增


1
2
1ZINCRBY words 10 a
2

获取指定范围的值


1
2
1ZRANGE words 0 -1
2

反向为 ZRANGE words 0 -1
WITHSCORES 可以同时返回 “score” 的值


1
2
1ZREVRANGE words 0 -1 WITHSCORES
2

获取指定 Score 的值


1
2
1ZRANGEBYSCORE words 1 20
2

返回的为 score 值在 “1-20” 的值,为闭区间。如果想使用开区间,需要在值前面加上 “(“。


1
2
3
4
1ZRANGEBYSCORE words (1 20
2
3ZRANGEBYSCORE words 1 (20
4

反向为 ZREVRANGEBYSCORE

也可以使用 -inf 和 inf 表示负无穷和正无穷

删除指定范围的值

按位置删除


1
2
1ZREMRANGEBYRANK words 2 3
2

按 Score 删除为 ZREMRANGEBYRANK

并集

ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|
MIN|MAX]

  • destination 要存入的键
  • numkeys 做并集的键的个数
  • key 需要做并集的键
  • weight 可选,用来乘以相应键的 “score”
  • aggregate 可选,处理每个加权得分的可选规则,默认为总和


1
2
1 ZUNIONSTORE importance 2 visits votes WEIGHTS 1 2 AGGREGATE SUM
2

以上表示建立 key 为 importance 的集合,其值为 visits 和 votes 两个集合的并集,且后者加权为 2

该命令也可以用于修改自身集合的 score


1
2
1ZUNIONSTORE votes 1 votes WEIGHTS 2
2

交集

ZINTERSTORE,使用同并集

版权声明:本文为博主原创文章,未经博主允许不得转载。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索