Redis入门实战(1)-简介

2020-05-31 16:03:53来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Redis入门实战(1)-简介

Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、高性能的key-value数据库,是当前使用最广泛的NoSQL之一。

1、简介

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)。

2、模式

2.1、单机模式

该模式只安装一个节点,一般用于测试学习。

2.2、主从模式

 主节点处理写请求,从节点处理都请求;可以达到读写分离、backup等目的。

2.3、哨兵模式

为了保证redis的高可用,哨兵模式在组从模式的基础上引入哨兵(Sentinel)来管理Redis的主从节点:
1.监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正常。
2.提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。
3.自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移操作,它会将其中一个从服务器升级为新的主服务器,并让其他的从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。

2.3、集群模式(cluster)

 

 

当缓存数据量增加以后,无法用单体服务器承载缓存服务时,需要把缓存的数据切分成不同的分区,将数据分区放到不同的服务器中,用分布式的缓存来承载高并发的缓存访问。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所放入的槽,从而实现自动分割数据到不同的节点上。然后再将这些槽分配到不同的缓存节点中保存。

 

3、持久化

3.1、RDB持久化

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 #快照文件名称

3.2、AOF持久化

AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。redis.conf中配置如下:

appendonly no                     #是否开启aof
appendfilename "appendonly.aof"   #日志文件名称
#appendfsync always               #每次有数据修改发生时都会写入AOF文件
appendfsync everysec              #每秒钟同步一次,该策略为AOF的缺省策略
#appendfsync no                   #从不同步。高效但是数据不会被持久化

 


原文链接:https://www.cnblogs.com/wuyongyin/p/12858488.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java动态代理与静态代理以及它能为我们做什么

下一篇:(易忘篇)java基本语法难点1