【redis数据结构 – lists】
redis的另一个重要的数据结构叫做lists , 翻译成中文叫做“列表” 。
首先要明确一点 , redis中的lists在底层实现上并不是数组 , 而是链表 , 也就是说对于一个具有上百万个元素的lists来说 , 在头部和尾部插入一个新元素 , 其时间复杂度是常数级别的 , 比如用LPUSH在10个元素的lists头部插入新元素 , 和在上千万元素的lists头部插入新元素的速度应该是相同的 。
虽然lists有这样的优势 , 但同样有其弊端 , 那就是 , 链表型lists的元素定位会比较慢 , 而数组型lists的元素定位就会快得多 。
lists的常用操作包括LPUSH、RPUSH、LRANGE等 。我们可以用LPUSH在lists的左侧插入一个新元素 , 用RPUSH在lists的右侧插入一个新元素 , 用LRANGE命令从lists中指定一个范围来提取元素 。我们来看几个例子:
//新建一个list叫做mylist , 并在列表头部插入元素"1"lists的应用相当广泛 , 随便举几个例子:
127.0.0.1:6379> lpush mylist "1"
//返回当前mylist中的元素个数
(integer) 1
//在mylist右侧插入元素"2"
127.0.0.1:6379> rpush mylist "2"
(integer) 2
//在mylist左侧插入元素"0"
127.0.0.1:6379> lpush mylist "0"
(integer) 3
//列出mylist中从编号0到编号1的元素
127.0.0.1:6379> lrange mylist 0 1
1) "0"
2) "1"
//列出mylist中从编号0到倒数第一个元素
127.0.0.1:6379> lrange mylist 0 -1
1) "0"
2) "1"
3) "2"
1.我们可以利用lists来实现一个消息队列 , 而且可以确保先后顺序 , 不必像MySQL那样还需要通过ORDER BY来进行排序 。
2.利用LRANGE还可以很方便的实现分页的功能 。
3.在博客系统中 , 每片博文的评论也可以存入一个单独的list中 。
【redis数据结构 – 集合】
redis的集合 , 是一种无序的集合 , 集合中的元素没有先后顺序 。
集合相关的操作也很丰富 , 如添加新元素、删除已有元素、取交集、取并集、取差集等 。我们来看例子:
//向集合myset中加入一个新元素"one"对于集合的使用 , 也有一些常见的方式 , 比如 , QQ有一个社交功能叫做“好友标签” , 大家可以给你的好友贴标签 , 比如“大美女”、“土豪”、“欧巴”等等 , 这时就可以使用redis的集合来实现 , 把每一个用户的标签都存储在一个集合之中 。
127.0.0.1:6379> sadd myset "one"
(integer) 1
127.0.0.1:6379> sadd myset "two"
(integer) 1
//列出集合myset中的所有元素
127.0.0.1:6379> smembers myset
1) "one"
2) "two"
//判断元素1是否在集合myset中 , 返回1表示存在
127.0.0.1:6379> sismember myset "one"
(integer) 1
//判断元素3是否在集合myset中 , 返回0表示不存在
127.0.0.1:6379> sismember myset "three"
(integer) 0
//新建一个新的集合yourset
127.0.0.1:6379> sadd yourset "1"
(integer) 1
127.0.0.1:6379> sadd yourset "2"
(integer) 1
127.0.0.1:6379> smembers yourset
1) "1"
2) "2"
//对两个集合求并集
127.0.0.1:6379> sunion myset yourset
1) "1"
2) "one"
3) "2"
4) "two"
【redis数据结构 – 有序集合】
redis不但提供了无需集合(sets) , 还很体贴的提供了有序集合(sorted sets) 。有序集合中的每个元素都关联一个序号(score) , 这便是排序的依据 。
推荐阅读
- 30 分钟包你学会 AWK
- 使用 SpringBoot Admin 监控你的 SpringBoot 程序
- 没有秘密的你免费资源 百度网盘密享功能有什么用
- ps笔刷不会用?教你设置好用的笔刷!
- 世界那么大,何必用百度?搜索引擎汇总,总有一款适合你
- 打开引擎盖全是油和灰,这应该怎么清洗?老司机:教你一些小妙招
- 买车被强制在4S店投保?别着急,教你一招出门就能退,他还没办法
- 日本的七大不可思议 日本人令人不能理解的行为
- 全球著名辣椒大赏!你认识几个?
- 教你在家就能做的蜜汁鸡翅,步骤简单,皮脆肉嫩,骨头都酥香入味