发布于2020-11-20 09:48 阅读(584) 评论(0) 点赞(16) 收藏(1)
Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、高性能的key-value数据库,是当前使用最广泛的NoSQL之一。
Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询,bitmaps,hyperloglogs和地理空间(geospatial) 索引半径查询。 Redis内置了复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions)和不同级别的磁盘持久化(persistence), 并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(high availability)。
该模式只安装一个节点,一般用于测试学习。
主节点处理写请求,从节点处理都请求;可以达到读写分离、backup等目的。
为了保证redis的高可用,哨兵模式在组从模式的基础上引入哨兵(Sentinel)来管理Redis的主从节点:
1.监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正常。
2.提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。
3.自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移操作,它会将其中一个从服务器升级为新的主服务器,并让其他的从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。
当缓存数据量增加以后,无法用单体服务器承载缓存服务时,需要把缓存的数据切分成不同的分区,将数据分区放到不同的服务器中,用分布式的缓存来承载高并发的缓存访问。Redis Cluster是官方在3.0版本后推出的分布式方案。
Redis Cluster 采用虚拟槽分区算法来对数据进行拆分。槽是用来存放缓存信息的单位,在Redis中将存储空间分成了16384个槽,也就是说Redis Cluster槽的范围是0 -16383(2^4 * 2^10)。缓存信息通常是用Key-Value的方式来存放的,在存储信息的时候,集群会对Key进行CRC16校验并对16384取模(slot=CRC16(key)%16383)。得到的结果就是Key-Value所放入的槽,从而实现自动分割数据到不同的节点上。然后再将这些槽分配到不同的缓存节点中保存。
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。redis.conf中配置如下:
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。 save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。 save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。
dbfilename dump.rdb #快照文件名称
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。redis.conf中配置如下:
appendonly no #是否开启aof appendfilename "appendonly.aof" #日志文件名称 #appendfsync always #每次有数据修改发生时都会写入AOF文件 appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略 #appendfsync no #从不同步。高效但是数据不会被持久化
作者:java大师
链接:http://www.javaheidong.com/blog/article/4963/8ca72af158c266f267b8/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!