Redis学习 List,set数据类型,发布与订阅

我们先复习一下java容器框架:LinkedList与hashset。

LinkedList是一种采用双向链表实现的列表,适用于实现顺序访问,删除与增加数据。了解一下linkedlist双向链表的数据结构模型:

每一个结点的内容分为三部分:与前驱结点相连的指针,当前结点值,与后继结点相连的指针。

而hashset就是数学里的集合,不允许有重复元素,且元素存放的规则是无序的。

 

 

 

redis里的List数据类型与linkedList差不多:比起普通的LinkedList列表,需要的每一个存储值的结点之间都存在一对前后指针,指针就占有了很大的内存空间,所以将几个结点组成一个ZipList之后再将一个ZipList作为一个结点,而这每一个zipList就相当于我们redis数据库中的一个List数据类型,由一个个ZipList链接起来的列表叫做quickList,Ziplist列表内部的索引对应的元素之间没有指针,就像是带方向的数组一样 ,注意lpush创建列表是头插法插入(左插),rpush创建列表是尾插法插入(右插)。对于查找来说都是从左到右,属于从头到尾。元素较少时可以实现类似数组一样的索引查值。

 

set集合,插入无序,查询定位极快,利用hash表的散列原理随机存放集合元素(再优质的哈希散列函数也会产生哈希冲突),每一个元素key都对应一个哈希值、底层原理是哈希字典,是一个键值对集合,特别适合存储序列化的java对象信息。 

下面是两个链接同一个redis的客户端,我们实验发布与订阅测试。

订阅就像是关注公众号一样,用户关注这个公众号,公众号发布文章所有订阅它的用户都能收到,不订阅就收不到,且发布的信息并不存储在数据库中,这就是利用了redis的特殊功能IO多路复用。

订阅命令 SUBSCRIBE channel(频道名 如:channel1 或者 channel2 等等)

发布命令 publish 频道名 消息 

 

 

 是不是感觉很神奇呢?我第一次接触也感觉这玩意好像是好多生活中的功能的底层?近期将会学习利用redis实现手机验证码的发送,这个就比较好玩了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ForestSpringH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值