Redis笔记整理3
2015-04-20 11:58
330 查看
一、Redis的lists
1.基本含义。
list在redis中是指linked list而非array,linked list有一个好处就是不管list中的数量,在list的head和tail插入一个元素的时间是一样的。list查找中间元素的速度是比较慢的,而sorted sets则比较快。
2.简单操作:
增:lpush rpush 删: lpop rpop ltrim rtrim 查:lrange
3.应用场景
记录最新的一些文章或者评论啥的。
基于生产者消费者模式的进程间通讯。
4.list的阻塞
有一种情况,基于生产者消费者模式的list,当消费者没有东西可以消费,那么这个时候会采用polling(轮询)的方式进行重新消费,即隔一会儿pop一下取数据,灾难来了,轮询间隔长,那么会有延时,轮询太短,那么会有很多没用的请求执行。 这个 时候阻塞list的命令来了,brpop和blpop,当list为空时阻塞。
![](https://img-blog.csdn.net/20170224132522042?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXNob290aW5nc3Rhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5.list的创建和空的list的删除。
所有的aggregate data type的操作都一样,lists,sets,sorted sets,hashes,都是当集合中要添加元素时创建,当集合中元素为空时删除,查看集合元素或者删除时返回的结果就好像是真的有一个对应key的集合存在。原文如下:
![](https://img-blog.csdn.net/20170224132541026?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXNob290aW5nc3Rhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
二、Redis中的hashes.
1.命令:
hmset hmget hgetall hset hget hgetall
2.含义:
感觉hash像是java中的一个有不同field的Object,或者一个JSON对象,也像是mysql数据库里的一条记录。
3.demo:
![](https://img-blog.csdn.net/20170224132600055?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXNob290aW5nc3Rhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我们可以通过设置不同的key值,实现一个类似于表的结构,例如author:1 ,author:2,author:3 。
4.hash这种结构在内存中是非常高效的。
三、Redis中的Set
1.含义
存储无序的strings集合。
2.操作
有插入,联合,找不不同,去一个随机的元素。
![](https://img-blog.csdn.net/20170224132619399?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXNob290aW5nc3Rhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
增:sadd sunionstore 查:smembers sismember sinter scard srandmember 删:spop
![](https://img-blog.csdn.net/20170224132629793?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXNob290aW5nc3Rhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
四、Redis中的Sorted Sets
1.含义
Sorted Sets在结构上像是Set和Hash的混合体,其中的每个元素都有一个floating point value叫做score。他是有序的,他 的顺序首先是由score决定,如果score相同,那么由元素内容的lexicographical 决定。
2.操作
增:zadd
查:zrange zrangebyscore zremrangebyscore zrank zremrank zrangebylex
3.
![](https://img-blog.csdn.net/20170224132656684?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXNob290aW5nc3Rhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
五、Redis中的bitmap
1.bitmap不是个真的数据结构,而是基于针对string的位操作的一个set。string可以512M那么占用的位,512*1024*1024*8=2的32次方个bits.(40个亿)
2.操作:
位操作分为两种:固定时间的单个bit操作 和 针对一组bit的操作。
3.优势
可以做到极限使用空间。一个string可以存储40个亿的bit。例如:512M的内存可以记录40个亿用户的性别。
应用场景:各种实时的分析。存储高校利用空间的boolean值。
4.
![](https://img-blog.csdn.net/20170224132844031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXNob290aW5nc3Rhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
六、Redis中的HyperLogLogs
直接贴:
![](https://img-blog.csdn.net/20170224132808061?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXNob290aW5nc3Rhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这种HLL结构是用来记录特殊的事务的个数。sets中元素个数的计算,需要用到与元素个数成正比的内存,而用hll可以只用一个常量的空间,最大占用空间为12K.如何做到的?是因为它实际上存储的是一种关于元素的state.
1.基本含义。
list在redis中是指linked list而非array,linked list有一个好处就是不管list中的数量,在list的head和tail插入一个元素的时间是一样的。list查找中间元素的速度是比较慢的,而sorted sets则比较快。
2.简单操作:
增:lpush rpush 删: lpop rpop ltrim rtrim 查:lrange
3.应用场景
记录最新的一些文章或者评论啥的。
基于生产者消费者模式的进程间通讯。
4.list的阻塞
有一种情况,基于生产者消费者模式的list,当消费者没有东西可以消费,那么这个时候会采用polling(轮询)的方式进行重新消费,即隔一会儿pop一下取数据,灾难来了,轮询间隔长,那么会有延时,轮询太短,那么会有很多没用的请求执行。 这个 时候阻塞list的命令来了,brpop和blpop,当list为空时阻塞。
5.list的创建和空的list的删除。
所有的aggregate data type的操作都一样,lists,sets,sorted sets,hashes,都是当集合中要添加元素时创建,当集合中元素为空时删除,查看集合元素或者删除时返回的结果就好像是真的有一个对应key的集合存在。原文如下:
二、Redis中的hashes.
1.命令:
hmset hmget hgetall hset hget hgetall
2.含义:
感觉hash像是java中的一个有不同field的Object,或者一个JSON对象,也像是mysql数据库里的一条记录。
3.demo:
我们可以通过设置不同的key值,实现一个类似于表的结构,例如author:1 ,author:2,author:3 。
4.hash这种结构在内存中是非常高效的。
三、Redis中的Set
1.含义
存储无序的strings集合。
2.操作
有插入,联合,找不不同,去一个随机的元素。
增:sadd sunionstore 查:smembers sismember sinter scard srandmember 删:spop
四、Redis中的Sorted Sets
1.含义
Sorted Sets在结构上像是Set和Hash的混合体,其中的每个元素都有一个floating point value叫做score。他是有序的,他 的顺序首先是由score决定,如果score相同,那么由元素内容的lexicographical 决定。
2.操作
增:zadd
查:zrange zrangebyscore zremrangebyscore zrank zremrank zrangebylex
3.
五、Redis中的bitmap
1.bitmap不是个真的数据结构,而是基于针对string的位操作的一个set。string可以512M那么占用的位,512*1024*1024*8=2的32次方个bits.(40个亿)
2.操作:
位操作分为两种:固定时间的单个bit操作 和 针对一组bit的操作。
3.优势
可以做到极限使用空间。一个string可以存储40个亿的bit。例如:512M的内存可以记录40个亿用户的性别。
应用场景:各种实时的分析。存储高校利用空间的boolean值。
4.
六、Redis中的HyperLogLogs
直接贴:
这种HLL结构是用来记录特殊的事务的个数。sets中元素个数的计算,需要用到与元素个数成正比的内存,而用hll可以只用一个常量的空间,最大占用空间为12K.如何做到的?是因为它实际上存储的是一种关于元素的state.
相关文章推荐
- Redis笔记整理(三):进阶操作与高级部分
- Redis笔记整理(一):Redis安装配置与数据类型操作
- redis 学习整理笔记
- NOSQL 概述(尚硅谷 Redis 教学视频笔记整理)
- Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建
- Redis 简单介绍(知识整理笔记)
- redis 学习笔记整理
- Redis学习笔记整理
- redis学习笔记整理
- redis学习笔记整理
- redis 学习笔记整理(正在逐步完善中)
- redis学习笔记整理
- Redis笔记整理2 --Redis数据类型
- redis笔记整理1
- Redis笔记整理2
- Redis自学笔记整理
- Redis笔记整理01
- Deep Learning(深度学习)学习笔记整理系列之(二)
- Redis入门指南笔记--哨兵
- Redis-HelloWorld与五大基本数据类型(笔记)