redis全面讲解使用场景

来源:互联网 发布:淘宝折扣怎么设置 编辑:程序博客网 时间:2024/06/05 09:32
1、最大redis用户,新浪微博,实时浏览人数统计就是依靠redis,两种使用场景:(1)应用程序直接访问redis(2)在访问redis失效的情况下访问mysql
2、有几下几种形式:
(1)数值、字符串
(2)列表list
(3)集合sets
(4)有序集合sorted sets
(5)哈希表hashes
3、持久化实现方式:使用截图的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但会一定程度造成数据丢失。
4、读取依靠主从同步来提高效率,所以读写之前性能差距大
5、适用场景
(1)取最新的5000个数据
(2)排行榜取top n操作(利用sorted sets)
(3)需要精准设定过期时间的应用
(4)计算器运用(利用INCR、DECR)
(5)uniq操作(使用set数据结构)
(6)实时系统,反垃圾系统
(7)构建队列系统(使用list,或者适用sorted set构建具有优先级的对列系统)
(8)pub/sub构建实时的消息系统
(9)缓存
6、Redis是一个操作数据结构的语言工具,它提供基于TCP的协议以操作丰富的数据结构
7、redis高级特性
(1)安全性,在redis.conf里配置requirepass
(2)主从复制
(3)事务控制
(4)持久化机制(redis支持两种持久化方式,一种是Snapshotting(快照)也是默认方式,另一种是Append-onlyfile(缩写aof)的方式。)
(5)发布及订阅消息
(6)pipeline批量发送
(7)虚拟内存
8、Redis实现分布式队列浅析
使用redis列表类型保存数据,队列采用左进右出的模式保证队列消息的顺序性。

使用Python操作redis数据

import redis

r= redis.Redis(host='localhost', port=6379, db=0)
r.set('user', 'ioiogoo')
r.get('user')
r.lpush('queue:1', 'task1')
r.brpop('queue:1', 3)

9、Redis主从复制问题和扩容问题的解决思路
一、解决主从复制问题
采用AOF方式达到增量同步
二、解决扩容问题
预算设定Redis instances数量,假设实例数量n,n = 机器数*单台机器redis实例数
后期扩展只需要将旧机器上的部分redis实例迁移到新的机器上,达到平滑扩容。
迁移步骤如下:

在新的机器上创建实例,并且每个实例设置为被迁移实例的从机。
主从复制完成之后,设置程序将新的实例作为主。
停止旧的实例
经过如上步骤之后,旧机器的内存就变大了,最后内存最大为每台机器一个Redis实例。

按作者文章中所说的,一个机器启动多个实例,其实并不会耗费太多资源,因为Redis够轻量,另外多个实例一个接一个的重写AOF文件或者生成内存快照,可以降低内存的占用,而不影响对外的服务。
10、Redis的使用模式之计数器模式实例
使用 Hash 数据类型维护大量计数器

有时候需要维护大量计数器,比如每一个论坛主题的查看数,比如每一个用户访问页面次数,因为论坛主题和用户基数可能很大,直接基于论坛主题或用户 ID 生成计数器的话,占用 Redis 资源还是相当可观的,这时可以用 Hash 数据类型压缩所需资源。
11、Redis实现唯一计数的3种方法分享
(1)基于 set 的方法简单有效,计数精确,适用面广,易于理解,它的缺点是消耗资源比较大(当然比起关系数据库是少很多的),如果元素个数很大(比如上亿的计数),消耗内存很恐怖。
(2)基于 bit 的方法比起 set 空间消耗小得多,但是它要求元素能否简单映射为位偏移,适用面窄了不少,另外它消耗的空间取决于最大偏移量,和计数值无关,如果最大偏移量很大,消耗内存也相当可观。
(3)实现超大数据量精确的唯一计数都是比较困难的,但是如果只是近似的话,计算科学里有很多高效的算法,其中 HyperLogLog Counting 就是其中非常著名的算法,它可以仅仅使用 12 k左右的内存,实现上亿的唯一计数,而且误差控制在百分之一左右
12、Redis中主键失效的原理及实现机制剖析
http://www.jb51.net/article/68254.htm

0 0
原创粉丝点击