前文http://haiziwoainixx.iteye.com/admin/blogs/2085763 测试过redis的主从配置,作为一个互联网开发技术人员,必须熟悉各种分布式部署应用方案,而缓存的分布式部署又是其中相当重要的一环,下面就来说一说redis的分布式部署方案。
一.客户端jedis的实现方案
使用jedis时可以给jedis连接池配置多个reidsserver实例,然后通过一致性哈希将数据分布到各个实例上,此种方式简单易用。
但是缺点就是当扩容时,之前的缓存相当于全部失效。
二.redis本身的实现方案
通过利用reids的主从复制,实现一主多从的部署,并且可以在从服务器进行数据备份,提供数据安全性和稳定性,但是此种方式的弊端或者说主从复制的弊端就是当向从服务器插入数据时并不会同步到主服务器,不像mysql可以互为主从来解决这个问题。也就是说可供客户端同时插入和查询的只能是主服务器,否则将存在数据部同步问题。
三.结合的解决方案
通过一+二的结合,我们可以实现N主+N从的实现方案,既可以解决数据安全性问题,也部分解决了负载均衡问题,但是仍然无法解决扩容时缓存失效的问题,对此,参考以下文章:
因为使用了一致性哈稀进行分片,那么不同的key分布到不同的Redis-Server上,当我们需要扩容时,需要增加机器到分片列表中,这时候会使得同样的key算出来落到跟原来不同的机器上,这样如果要取某一个值,会出现取不到的情况,对于这种情况,Redis的作者提出了一种名为Pre-Sharding的方式:
Pre-Sharding方法是将每一个台物理机上,运行多个不同断口的Redis实例,假如有三个物理机,每个物理机运行三个Redis实际,那么我们的分片列表中实际有9个Redis实例,当我们需要扩容时,增加一台物理机,步骤如下:
A. 在新的物理机上运行Redis-Server;
B. 该Redis-Server从属于(slaveof)分片列表中的某一Redis-Server(假设叫RedisA);
C. 等主从复制(Replication)完成后,将客户端分片列表中RedisA的IP和端口改为新物理机上Redis-Server的IP和端口;
D. 停止RedisA。
这样相当于将某一Redis-Server转移到了一台新机器上。Prd-Sharding实际上是一种在线扩容的办法,但还是很依赖Redis本身的复制功能的,如果主库快照数据文件过大,这个复制的过程也会很久,同时会给主库带来压力。所以做这个拆分的过程最好选择为业务访问低峰时段进行。
四.redis云
以上几种方式都是基于目前的redis版本给出的解决方案,redis的作者正在进行reids云版本的相关开发,期待中.
相关推荐
Redis-Py-Cluster是一个Python库,专门用于在Python环境中操作Redis分布式集群。该库为开发者提供了便捷的方式与Redis集群进行交互,支持各种数据结构,如字符串、哈希、列表、集合和有序集合等。在本文中,我们将...
通过以上介绍,我们了解了如何使用Tomcat-Redis-Session-Manager实现Session共享。这个方案不仅解决了分布式环境下的Session一致性问题,还提供了可扩展性和高可用性。在实际开发中,结合合理的配置和监控,可以大大...
在配置Tomcat-Redis-Session-Manager时,开发者需要在Tomcat的`context.xml`文件中添加相关的manager配置,指定使用Redis作为session存储。这通常涉及设置`Manager`元素的`className`属性为`org.apache.catalina....
5. 使用redis-trib.rb命令启动集群功能 6. 测试Redis集群的节点是否正常运行 相关概念: 1. Redis分布式集群 2. Redis集群配置 3. Redis节点配置 4. jemalloc内存分配器 5. ruby和redis gems 6. 防火墙规则 7. ...
Java开发案例-springboot-29-整合ShedLock实现分布式定时任务(redis版)-源代码+文档.rar Java开发案例-springboot-29-整合ShedLock实现分布式定时任务(redis版)-源代码+文档.rar Java开发案例-springboot-29-整合...
【描述】中提到的"所需的tomcat-redis-session-manager所有的jar包下载"意味着我们需要了解如何配置和使用这个第三方库,以便在Tomcat8环境中存储和检索用户的session数据到Redis缓存系统。测试环境使用的是JDK1.8,...
3. 启动服务:使用 `systemctl start redis` 或 `./redis-server /etc/redis/redis.conf` 来启动 Redis 服务。 4. 初始化 Sentinel 或 Cluster:根据需要配置高可用性,创建哨兵集群或数据分片集群。 5. 安装和配置...
tomcat-redis-session-manager-master为tomcat集群分布式session分享功能,详细信息见http://blog.csdn.net/fengshizty?viewmode=list对应内容
此外,为了确保高可用性,可以考虑在Redis集群上运行`tomcat-redis-session-manager`,这样即使某个Redis节点故障,session数据也不会丢失,服务仍能正常运行。 总的来说,`tomcat-redis-session-manager`是应对...
1. 使用`redis-cli --cluster create`命令创建集群。这个命令需要提供所有初始节点的IP地址和端口号,以及集群副本的数量(默认为1)。例如: ``` redis-cli --cluster create 192.168.65.2:7000 192.168.65.2:...
在IT行业中,尤其是在分布式系统和Web服务的领域,Session共享是一个关键问题。...在实际部署时,只需正确配置"redis-data-cache.properties",并将这些jar文件添加到Tomcat的类路径中,即可启用Redis作为Session存储。
在Windows环境下安装Redis,可以借助于提供的压缩包"redis-windows-7.2.5.zip"进行。以下是关于Redis及其在Windows上的安装和使用的详细知识: 1. **Redis特性** - **键值对存储**:Redis的核心是键值对模型,其中...
通过使用`tomcat-redis-session-manager`,开发者可以构建更健壮、可扩展的Web应用,同时享受Redis提供的高效Session存储方案。在实际操作中,务必确保正确配置所有组件,以确保系统的稳定性和安全性。
分布式缓存-基于Redis集群解决单机Redis存在的问题。分布式缓存-基于Redis集群解决单机Redis存在的问题。分布式缓存-基于Redis集群解决单机Redis存在的问题。分布式缓存-基于Redis集群解决单机Redis存在的问题。...
在Windows环境下安装Redis,我们可以使用提供的`redis-windows-7.0.8.zip`压缩包。这个压缩包包含了Redis服务器的Windows版本,包括必要的二进制文件和服务配置。以下是详细的使用步骤和相关知识点: 1. **解压与...
在Windows环境下,Redis提供了方便的安装和使用方式,如标题所示的"redis-windows-7.0.2.zip"压缩包,正是针对Windows平台的Redis版本。 Redis的设计理念在于提供低延迟、高并发的键值存储服务,它支持多种数据结构...
首先,我们来看`Tomcat-Redis-Session-Manager`的核心功能:它将Tomcat默认的内存会话管理替换为基于Redis的分布式会话管理。这主要涉及两个关键组件:`RedisSessionManager`和`RedisSessionHandlerWrapper`。 `...
3. 安装Redis Session Manager:将"tomcat-cluster-redis-session-manager_4.0.zip"解压,把相关的JAR文件添加到Tomcat的lib目录,并配置Context元素以使用这个Session Manager。 4. 配置Session持久化:在server....
5. 在同一个命令提示符窗口(或新开一个)输入`redis-cli.exe`,连接到本地Redis服务器,开始使用Redis命令。 Redis支持多种数据类型,包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合...
配置集群需要遵循特定的步骤,包括槽分配和节点间通信。 9. **安全措施**:虽然Redis默认不启用密码认证,但可以通过配置启用`requirepass`,增加一层安全性。另外,应谨慎设置网络配置,避免直接暴露在公共网络上...