检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
)3种模式,其中Redis节点可配置cluster(集群), master-slave(主从), normal(普通)Redis服务,搭配MAS可实现多活容灾;同时内置故障注入功能可创建带有注入故障的实例,进行相关业务场景的模拟,配置修改请参考故障注入Redis配置示例。 该模块具有如下特性:
接入指南 Spring项目接入MAS-Redis-SDK SpringBoot项目接入MAS-Redis-SDK 父主题: MAS-Redis-SDK使用手册
Jedis、Lettuce Jedis是一个流行的Java客户端库,用于与Redis数据库进行交互。 Lettuce 是一个可伸缩线程安全的Redis客户端,多个线程可以共享同一个 RedisConnection。 直接替换客户端命令参考如下。 import com.huawei
-redis v8.11.3的基础上实现的支持多活容灾服务的Redis连接客户端,其宗旨是促进开发者对于异地多活的Redis关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。 父主题: 概述
com/huaweicloud/devcloud-go/redis" ) var ( DevSporeClient *redis.DevsporeClient // Redis 客户端 ) func init() { DevSporeClient = redis.NewDevsporeClientWithYaml("
Windows系统,推荐使用Windows 7及以上版本。 安装Go 开发环境的基本配置。版本要求1.14.6及以上。 安装配置Goland Goland使用11.0及以上版本,用于开发程序的工具。 父主题: Redis
请参考表3 etcd配置,如配置,则会从远端拉取。RedisServer配置对本地配置进行覆盖。同MAS-DB-SDK配置。 redis 是 RedisClusterConfiguration object 请参考表4 RedisServer配置。 route-algorithm
le-write(本地读异步双写) single-read-async-double-write(单边读异步双写) 父主题: MAS-Redis-SDK使用手册
7及以上版本。 安装JDK 开发环境的基本配置。JDK版本要求: 1.8.0_262及以上版本。 安装Maven MAS-Redis-SDK使用Maven获取项目版本。Maven版本要求:3.3.0及以上版本。 安装和配置IntelliJ IDEA 用于开发程序的工具。IntelliJ IDEA版本要求:15
DcsConnetion命令参考 DcsConnection已实现部分RedisConnection的接口。 用户有需要时可以继承重写此类方法。 常用命令使用方式参考如下: public Long append(@Nonnull byte[] key, @Nonnull byte[]
开发流程 开发的流程如下所示: 版本获取及引入依赖 通过go.mod引入需要的依赖,是使用MAS-GO-SDK的基础。 配置创建DevsporeClient客户端 通过配置客户端信息,引入MAS-GO-SDK-Redis创建DevsporeClient客户端。 支持以代码方式添加
请参考EtcdConfiguration数据结构说明。 etcd配置,如配置,则会从远端拉取。 redis 是 RedisConfiguration 请参考RedisConfiguration数据结构说明。 RedisServer配置。 routeAlgorithm 是 string single-read-write
客户各场景替换方案 Jedis、Lettuce spring-boot-data-redis ShedLock Redisson Lock 自定义DcsConnection 父主题: MAS-Redis-SDK使用手册
一侧,导致分布式锁锁不住。要实现分布式锁必须保证读写在同一侧。 通过setnx等命令实现的情况,需在方法上加注解路由指定读数据源@ReadRoute(from = RedisSource.ACTIVE)。 如使用Redisson分布式锁时需根据激活的数据源创建RedissonClient。
ShedLock ShedLock是一个用于分布式任务调度的开源库。 它提供了一种简单而可靠的方式来确保在分布式环境中只有一个节点执行指定的任务。 对接ShedLock命令参考如下。 import com.huawei.devspore.mas.redis.core.MultiZoneClient;
本地读单边写,适用于读多写少场景,读流量很大,对一致性不敏感的场景: 对于用户,不感知多个Redis。 对于SDK 读操作:同步路由到local Redis。 写操作:同步路由到active Redis。 此场景下Redis之间依赖同步服务相互同步。 图1 local-read-single-write部署图
single-read-write(单边读写) single-read-write场景具有以下两个特点: 读操作:同步路由到指定active的Redis;写操作:同步路由到指定active的Redis。 支持MAS动态切换激活数据源。 父主题: 使用场景
自定义DcsConnection 使用场景:使用RedisTemplate命令时,DcsConnection中的接口没有覆盖到的情况,可以自定义扩展DcsConnection。 自定义DcsConnection。 type选择为normal时使用。 import com.huawei
pipeline功能使用示例 pipeline功能使用: 需要返回值示例: @Autowired private MultiZoneClient client; public void Demo() { client.executePipeline(pipeline ->
对于用户,不感知多个Redis。 对于SDK。 读操作:同步路由到近端Redis。 写操作:同步路由到近端Redis,同时异步发送到远端Redis。 此场景下Redis之间会相互同步,两个Redis位置等同没有主备之分,切换不会产生影响。 当不同实例内SDK操作同一个Redis key时,不能保证两个Redis的一致性。