Redis分片
Posted 宫商角羽徵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis分片相关的知识,希望对你有一定的参考价值。
1. 分片作用
说明:一般的业务系统中会将一些重要数据保存到内存中,如果内存占用很大时只使用一台redis则效率低,所以搭建redis分片实现内存的扩容。
2. 准备3台redis
- 创建shards目录
mkdir shards
2.复制3份配置文件
cp redis.conf shards/6379.conf
cp redis.conf shards/6380.conf
cp redis.conf shards/6381.conf
3.修改配置文件 分别修改端口号(redis.conf文件)
4.启动3台redis
src/redis-server shards/6379.conf
src/redis-server shards/6380.conf
src/redis-server shards/6381.conf
5.检查服务启动是否正确:ps -ef|grep redis
3. 测试分片
redis分区有两种方式,对既定的key有不同的方式来选择这个key存放到哪个实例中,也就是说有不同的系统来映射某个key到某个Redis的服务。
- 最简单的分区方式为范围分区,就是映射一定范围的对象到特定的Redis实例。比如,ID从0到10000的用户会保存到实例R0,ID从10001到 20000的用户会保存到R1,以此类推。
- 另外一种方式是hash一致算法实现分区,对key值进行hash一致性计算后得到结果,最终将数据保存到某一台redis实例中。
@Test public void testShards() { List<JedisShardInfo> list = new ArrayList<JedisShardInfo>(); list.add(new JedisShardInfo("192.168.2.102",6379)); list.add(new JedisShardInfo("192.168.2.102",6380)); list.add(new JedisShardInfo("192.168.2.102",6381)); ShardedJedis jedis = new ShardedJedis(list); jedis.set("tsvv,"redis分片测试"); System.out.println(jedis.get("tsvv")); }
分片是多台redis共同作用的,如果其中一台出现了宕机现象,则整个分片都将不能使用,虽然是在一定程度上缓减了内存的压力,但是没有实现高可用。可以采用哨兵机制实现主从复制从而实现高可用。
以上是关于Redis分片的主要内容,如果未能解决你的问题,请参考以下文章
flea-frame-cache使用之Redis分片模式接入
在 Istio 中实现 Redis 集群的数据分片读写分离和流量镜像