首页 > 编程知识 正文

分布式一致性问题,redis字符串底层实现原理

时间:2023-05-06 17:37:37 阅读:165370 作者:2766

目录

客户端分布

分布式XMemcached客户端

分布式APP应用程序. yml配置

设定节点的权重

动态添加/删除节点

主辅助模式

客户端的分布Memcached的分布由客户端实现,客户端根据key的散列值获取要存储的Memcached节点,将对应的value存储在对应的节点中。

XMemcached客户端每个客户端都有不同的分布式实现方式,这里使用XMemcached。

XMemcached也支持客户端分布式策略。 缺省分布式策略是根据key的散列模式获得的连接数的馀数,对应的连接是要存储的节点。 如果使用默认分布式策略,则不需要进行配置或编程。

XMemcached也支持一致散列,可以在客户端设置过程中直接指定。

有关Springconfig配置的详细信息,请参阅https://blog.csdn.net/QQ _ 42543063/article/details/115548208或Memcached集成Springboot和常规操作

memcachedclientbuilderbuilder=newxmemcachedclientbuilder (addr util.get addreses (imemcachedproperties.get servers ) ) ) memcachedClient=builder.build (; XMemcached还添加了散列算法——选举散列,在某些情况下可以代替一致性散列

memcachedclientbuilderbuilder=newxmemcachedclientbuilder (addr util.get addreses (imemcachedproperties.get servers ) ) ) memcachedClient=builder.build (; 分布式APP应用程序. yml配置spring: memcache: #服务地址,分布式地址使用间隔的servers :127.0.0.1:1121127.0.0.13:1130 #服务地址操作超时时间optime out :5000 sanitize keys 3360 #操作超时时间optime out 33605000 sanitize keys :

然后,在使用分布式存储数据或检索数据时,使用一致的散列算法指定服务

节点权重memcachedclientbuilderbuilder=newxmemcachedclientbuilder (addr util.get addresses (imemcachedproperties.get servers ) 例如,现在将“localhost:12000”节点的权重设置为1,将“localhost:12001”的权重设置为3。 请注意,xmemcached的权重是通过复制多个连接的引用实现的。 例如,如果权重为3,则复制三个相同连接的参照并将其放入集合中,以便让MemcachedSessionLocator检索。

要动态添加/删除节点,除了JMX支持一节中介绍的基于JMX的操作外,还可以编程以下方法:

memcachedclientclient=newxmemcachedclient (addr util.get addresses (imemcachedproperties.get servers ) ); //addtwonewmemcachednodesclient.addserver (' server :11211 server 4336011211 ); //removememcachedserversclient.removeserver (' server 1336011211 server 2336011211 ); 可以设置主模式memcached节点的备份节点,以便在主节点断开时,将原本应该发送到主节点的请求转发到standby备份节点。 必须启用故障模式才能使用备份节点。

memcachedclientbuilder=newxmemcachedclientbuilder (addr util.get address map (localhost 336011211, 在localhost336011212Hoost上的示例中,将localhost:11211的备份节点发送到localhost:11212,将host2:11211的备份节点发送到host 2:111112

字符串“host:port,host:port '”也可以在spring配置中使用,并与1.3之前的格式完全兼容。

启动后日志如下:

//连接memcachedclientbuilderbuilder=newxmemcachedclientbuilder (addr util.get addreses (imemcachedproperties.get servers ) 故障模式意味着当memcached节点关闭时,对该节点的请求将直接失败,而不是下一个有效的memcached节点。缺省情况下,failure模式builder.setfailuremode

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。