五十二、Redis 数据库 2:set类型、zset类型、hash类型

版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:https://blog.csdn.net/xk1761299425 https://blog.csdn.net/xk1761299425/article/details/82055843

一、set集合类型(无序集合类型)

redis里面的set集合类型是string类型的无序集合,被称为无序集合类型

set元素最大可以包含(2的32次方-1)个元素。

1、集合满足三个特点:

无序性:集合里面的数据是没有顺序之分。

唯一性:集合里面的数据彼此是不能重复。

确定性:集合里面的数据的个数是确定的。

2、该类型应用场合:qq好友推荐

3、sadd向集合里面添加元素: sadd 集合名 数值

4、smembers获取集合里面的元素

5、srem移除集合里面指定的某个元素,成功返回1

6、spop随机的弹出集合里面的某个元素

7、sismember 集合名 元素: 判断 元素 是否在集合中

8、scard 集合名:返回set的元素个数

9、smove p1 p2 元素:从p1对应集合中移除给定元素,并将指定的元素添加到p2中,成功返回1

二、集合的一个实际使用场景

1、一般redis里面的集合被用在社交类型的网站里面做好友关系展示。例如:实现好友的推荐,共同好友......

2、设置4个用户(一个集合)

3、设计好友的集合(另写一个集合

① 用户id为3的用户好友集合里面有1和2:代表的含义是3号用户有两个好友。

王五的好友是:张三和李四。

Set是个集合名,格式可自己一级一级写(起名有意义,可自己定义键值名)

② 用户id为45的用户好友集合里面的数据是2:代表的含义是45号用户有一个好友。

赵六的好友是:李四。

4、求交集、并集、差集

① 获取3号和45号的共同好友(求交集)  sinter

② 获取3号和45号的全部好友(求并集)sunion

③ 让3号用户给45号用户推荐好友(求差集) sdiff(以前一个为准,求前面的差集,如果前:1,2,后2,后-前 差集为空)

三、Redis 数据库 --zset类型

(1)zset(sorted set)类型(有序集合

和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个权。

通过权值可以有序的获取集合中的元素。

redis里面的zset类型被称为有序集合,意味着有序集合里面的元素是排好序的,也满足唯一性和确定性。

1、有序集合概图:

2、zadd添加元素到集合,元素在集合中存在则更新,不存在添加

zadd  key 权重 元素

下面的1 / 5 / 15 / 45就是权重:

如果元素本已存在,添加不同权重的重复元素不会生成新元素,会更新值:

3、zrange key start end:返回指定区间的元素,返回的是按权重升序

4、zrange key start end withscores 获取集合内容的时候,显示权重信息

(2)案例:利用sort set实现获取最热门的前5贴子信息。

1、添加元素:

按照帖子回复量排序:102是权重,11是元素

2、zrevrange key start end:返回指定区间的元素,返回的是按权重(也就是贴子的回复量)降序

3、zremrangebyrank key min max:删除集合中排名在给定区间的元素(权值从小到大排序)索引从0开始

4、增加一个新元素,就删除一个旧元素(回复量最低的)

zremrangebyrank  key 0 0    (权值从小到大排序,索引从0开始)

5、zrank key 元素:返回指定元素在集合中的排名(下标),集合中元素是按升序

6、zrevrank key 元素:返回指定元素在集合中的排名(下标),集合中元素是按降序

7、zcard key:返回集合中元素个数

8、zscore key 元素:返回给定元素对应的权重

9、zincrby key 增长的值 指定元素:使指定元素的权重增加对应的值,并返回增加后的值

10、zrem key  指定元素:删除指定元素,1表示成功,元素不存在返回0

四、Redis 数据库 --hash类型

1、hset设置单个值:(重复设置相同的则更新)

2、hget获取值:

3、hmset设置多个值:

4、hgetall获取hash全部的值:

5、hset:设置散列值(带:号形式的)

6、hget:获取散列值

7、hmget:获取多对散列值

8、hmset:设置多对散列值

9、hkeys:返回所有keys

10、hvals:返回所有Values

11、hlen:返回散列包含域(field)的数量

12、hdel:删除散列指定的域(field)(删除值

13、hexists:判断是否存在,返回1存在,返回0不存在

14、hincrby:将指定的hash filed加上给定值

猜你喜欢

转载自blog.csdn.net/xk1761299425/article/details/82055843
今日推荐