Redis

Posted Q_Y_X

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis相关的知识,希望对你有一定的参考价值。

Redis集群

author:QYX

问题:

容量不够?redis如何进行扩容?

并发写操作,redis如何分摊?

什么是集群?

Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这个N个节点中,每个节点存储总数据的1/N

Redis集群通过分区(partition)来提供一定程度的可用性(availbility):即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注意不要使用127.0.0.1,要使用真实的IP地址

我们可以发现集群启动了

然后以集群的方式进入客户端

redis-cli -c(cluster) -p 端口号

测试一下

可以使用cluster nodes命令查看集群信息

 

 

 

 

 

 我们可以使用{}来指定相关组,相同组之间的数据必定在同一个插槽中

 

 

 

 何为slot?

 

 

 

 

 

 

回答:

1 从节点会变为主节点

2 主节点会变成从节点

3 不能继续

Redis集群提供了以下好处:

1 实现扩容

2 分摊压力

3 无中心配置相对简单

Redis集群的不足

1 多键操作是不被支持的

2 多键的Redis事务是不被支持的,lua脚本也不被支持

3 由于集群方案出现较晚,很多公司已经采用了其他的集群方案,而代理或者客户端分片的方案想要迁移至redis cluster,需要整体迁移而不是逐步过度,复杂度过度

Redis集群的java操作

 

 

 

public void testRedis()
{
    Set<HostAndPort> sets=new HashSet<>();
    sets.add(new HostAndPort("198.162.99.1",6379));
    JedisCluster jedisCluster=new JedisCluster(sets);
    jedisCluster.set("admin","123456");
    String admin = jedisCluster.get("admin");
    System.out.println(admin);
    jedisCluster.close();
}

以上是关于Redis的主要内容,如果未能解决你的问题,请参考以下文章

redis存储session配制方法

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

Redis缓存:java语言注释符号,附超全教程文档

spring boot 整合 redis

Redis 学习 —— 数据类型及操作