`
youyu4
  • 浏览: 442111 次
社区版块
存档分类
最新评论

redis分区

 
阅读更多

redis分区

 

分区的好处

1. 通过利用多台计算机内存的和值,允许我们构造更大的数据库。

2. 通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允许我们扩展网络带宽。

 

 

分区的缺点

1. 涉及多个key的操作通常是不被支持的。举例来说,当两个set映射到不同的redis实例上时,你就不能对这两个set执行交集操作。

2. 涉及多个key的redis事务不能使用。

3. 当使用分区时,数据处理较为复杂,比如你需要处理多个rdb/aof文件,并且从多个实例和主机备份持久化文件。

4. 增加或删除容量也比较复杂。redis集群大多数支持在运行时增加、删除节点的透明数据平衡的能力,但是类似于客户端分区、代理等其他系统则不支持这项特性。然而,一种叫做pre-sharding的技术对此是有帮助的。

 

 

Pre-Sharding

 

通过上面的介绍,我们知道Redis分区应用起来是有问题的,除非我们只是使用Redis当做缓存,否则对于增加机器或删除机器是非常麻烦的。

 

然而,通常我们Redis容量变动在实际应用中是非常常见的,比如今天我需要10台Redis机器,明天可能就需要50台机器了。

 

 

Pre-Sharding原理

鉴于Redis是很轻量级的服务(每个实例仅仅占用1M),对于上面的问题一种简单的解决办法是:

我们可以开启多个Redis实例,尽管是一台物理机器,我们在刚开始的时候也可以开启多个实例。我们可以从中选择一些实例,比如32或64个实例来作为我们的工作集群。当一台物理机器存储不够的时候,我们可以将一般的实例移动到我们的第二台物理机上,依次类对,我们可以保证集群中Redis的实例数不变,又可以达到扩充机器的目的。

 

 

怎么移动Redis实例呢?

当需要将Redis实例移动到独立的机器上的时候,我们可以通过下面步骤实现:

 

简单

1. 在新的物理机上运行Redis-Server;

2. 该Redis-Server从属于(slaveof)分片列表中的某一Redis-Server(假设叫RedisA);

3. 等主从复制(Replication)完成后,将客户端分片列表中RedisA的IP和端口改为新物理机上Redis-Server的IP和端口;

4. 停止RedisA。

 

详细

1. 在新的物理机上启动一个新的Redis实例。

2. 将新的物理机作为要移动的那台的slave机器。

3. 停止客户端。

4. 更新将要被移动的那台Redis实例的IP地址。

5. 对于slave机器发送SLAVEOF ON ONE命令。

6. 使用新的IP启动Redis客户端。

7. 关闭不再使用的那个Redis实例。

 

 

分区的方法

 

1. 范围分区。按范围分区,就是映射一定范围的对象到特定的Redis实例,但是要有一个区间范围到实例的映射表。这个表要被管理,同时还需要各 种对象的映射表,通常对Redis来说并非是好的方法

哈希分区。对任何key都适用,也无需是object_name:这种形式

 

2. 用一个hash函数将key转换为一个数字,比如使用crc32 hash函数。对key foobar执行crc32(foobar)会输出类似93024922的整数

对这个整数取模,将其转化为0-3之间的数字,就可以将这个整数映射到4个Redis实例中的一个了。93024922 % 4 = 2,就是说key foobar应该被存到R2实例中

 

 

分享到:
评论

相关推荐

    Redis 分区

    Redis分区是一种将数据分散到多个Redis实例上的策略,目的是为了扩展数据库的规模,提升计算能力和网络带宽。这种技术在大型分布式系统中尤其重要,因为它能够有效地管理和利用资源。然而,分区同时也带来了一些挑战...

    Redis技术参考手册.docx

    Redis分区(Sharding)是通过将数据分散到多个独立的Redis实例来扩展存储容量和处理能力。数据可以在初始设计时就进行分区,也可以随着业务规模的增长逐步实施。选择何时进行分区取决于业务需求和预期增长,早期规划...

    分布式缓存 Redis + Memcached 经典面试题!.pdf

    5. **Redis分区**: 分区是为了扩展Redis的内存和计算能力,通过将数据分散到多台机器,可以利用所有机器的资源,提高并发处理能力和存储容量。 6. **Redis的内存占用**: Redis中键值对的存储会包含额外开销,...

    redis window最新免安装版本

    Redis 具有内置复制、 Lua 脚本编写、 LRU 垃圾清理、事务处理和不同级别的磁盘持久性,并通过 Redis Sentinel 提供高可用性和使用 Redis Cluster 自动分区。 为了实现最佳性能,Redis 使用内存中的数据集。根据用例...

    RedisCluster分区实现原理

    在RedisCluster中,分区实现的关键在于数据的均匀分布、客户端的正确访问以及在分片过程中保持服务的连续性。 RedisCluster的核心概念是槽(slot),这是一组从0到16383的数字,用于确定数据应存储在哪个节点上。每...

    linux系统redis免安装版

    - Redis Cluster:实现数据分区和故障转移的分布式集群方案。 8. **性能优化** - 使用内存优化策略,如设置适当的缓存淘汰策略。 - 调整配置参数,如增大客户端连接数、优化持久化策略等。 - 监控系统资源,...

    Redis windows 64 版本 下载

    - Redis Cluster是Redis的分布式解决方案,可以自动分区并管理多个节点,实现水平扩展。 以上内容涵盖了在Windows 64位系统上下载、安装和使用Redis的基础知识,包括其核心特性和常见操作。理解并熟练掌握这些知识...

    windows版redis4

    Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区...

    Redis - Redis深度历险.pdf.zip

    9. **Cluster集群**:Redis Cluster是Redis的分布式解决方案,可以自动分区数据,支持在多个节点间透明地分发键,并且提供了高可用性。 10. **过期策略**:Redis允许为键设置过期时间,这在缓存场景中非常有用,...

    Redis实战_Redis实战中文完整版_Redis快速入门_Redis数据类型及操作_Redis常用

    6. **Redis集群**:当单机Redis无法满足需求时,可以搭建Redis Cluster集群,实现数据分区和负载均衡。集群的搭建、数据分布、故障处理等都是集群部分的重点。 7. **Redis在缓存中的应用**:Redis作为缓存,能有效...

    redis常用命令,redis配置文件,redis持久化,redis事务,redis主从复制,jedis的使用

    Redis 入门详解 Redis 是一种开源、基于内存的数据结构存储系统,可以用作数据库、消息队列、缓存层等。下面是对 Redis 的常用命令、配置文件、持久化、事务、主从复制、Jedis 使用的详细讲解。 Redis 常用命令 ...

    redis for windows 6.0.9.zip

    - Redis Cluster提供分布式解决方案,自动分区(Sharding)数据,支持多个主节点,每个主节点都有一个或多个从节点。 - 集群设置相对复杂,需要配置节点间的通信和槽(slot)分配。 9. **Redis与Windows的兼容性*...

    最新版windows windows-redis-6.2.7.zip

    Redis 3.0引入了集群模式,允许你创建由多个节点组成的一个分布式数据库,每个节点都可以存储一部分数据,并通过槽位进行数据分区。 8. **安全设置**: 默认情况下,Redis不开启密码认证,为了安全性,可以在配置...

    redis-windows-7.2.2.zip

    从7.0版本开始,Redis引入了Cluster集群模式,可以实现数据分区和自动故障转移,进一步提高系统的健壮性和扩展性。 总的来说,Redis在Windows上的部署和使用并不复杂,其高效、灵活的特性和丰富功能使其在IT行业中...

    redis_windows_V6.2.6

    在集群环境中,可以使用Redis Cluster搭建分布式数据库,提供自动故障转移和数据分区。 在Windows上,可以通过客户端工具如`redis-cli.exe`或第三方图形界面工具(如Redis Desktop Manager)来与Redis服务器交互,...

    Redis实战.pdf

    - **Redis Cluster**:Redis 集群支持自动分区,将数据分散在多个节点上,提供更高的扩展性和容错性。 7. **Redis在实际应用中的场景** - **缓存**:由于Redis的高性能,常用于网站的页面缓存、数据缓存等。 - *...

    redis-7.0.11-aarch64.tar.gz

    10. **集群部署**:如果需要高可用性和扩展性,可以学习如何配置和管理Redis集群,包括设置主从复制、故障转移和槽分区等。 在鲲鹏aarch64架构上使用Redis,需要确保你的系统环境兼容,包括依赖库和系统版本。此外...

    redis-6.2.13.tar.gz

    Redis 3.0引入了集群功能,允许多个节点分布式存储数据,自动处理数据分区和故障转移。 7. **Lua脚本**: Redis支持在服务器端执行Lua脚本,用于实现更复杂的逻辑操作。 8. **内存管理**: Redis通过LRU(Least...

    Redis-x64-7.0.5-windows11

    8. **Cluster集群**:Redis Cluster提供分布式解决方案,能够自动处理数据分区和故障恢复。 在Windows 11环境下,安装和配置Redis-x64-7.0.5-dragon需要注意以下几点: 1. **编译环境**:由于Redis原生为Linux系统...

Global site tag (gtag.js) - Google Analytics