12

redission-java连接redis的客户端-redis单节点,哨兵和集群模式

 3 years ago
source link: https://www.okayjam.com/redission-java%e8%bf%9e%e6%8e%a5redis%e7%9a%84%e5%ae%a2%e6%88%b7%e7%ab%af-redis%e5%8d%95%e8%8a%82%e7%82%b9%ef%bc%8c%e5%93%a8%e5%85%b5%e5%92%8c%e9%9b%86%e7%be%a4%e6%a8%a1%e5%bc%8f/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

redission-java连接redis的客户端-redis单节点,哨兵和集群模式

redission 提供了大量的分布式操作工具,操作很方便。基于Java实用工具包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类。

Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。

maven的pom依赖配置

  <!-- https://mvnrepository.com/artifact/org.redisson/redisson -->
    <dependency>
      <groupId>org.redisson</groupId>
      <artifactId>redisson</artifactId>
      <version>3.11.1</version>
    </dependency>

单主机模式

Config config = new Config();
config.useSingleServer().setAddress("redis://192.168.98.100:6379");
RedissonClient redisson = Redisson.create(config);
Config config = new Config();
config.useSentinelServers().setMasterName("mymaster");
String hosts = "192.168.242.128:28021,192.168.242.128:28022,192.168.242.128:28023";
Arrays.stream(hosts.split(",")).forEach(host->  config.useSentinelServers().addSentinelAddress("redis://"+ host));
RedissonClient redisson = Redisson.create(config);
Config config = new Config();
String hosts = "192.168.242.128:8201,192.168.242.128:8202,192.168.242.128:8203";
Arrays.stream(hosts.split(",")).forEach(host->  config.useClusterServers().addNodeAddress("redis://"+ host));
redisson = Redisson.create(config);

哨兵模式连接的地址是哨兵的地址,而集群模式的地址是主节点的地址

使用redission很方便实现分布式锁,代码如下

// 获取RedissonClient
RedissonClient redissonClient = Redisson.create(config);
// 设置锁定资源名称
RLock disLock = redissonClient.getLock("mylock");
boolean isLock;
try {
    //尝试获取分布式锁,500ms获取锁,锁过期时间15000ms
    isLock = disLock.tryLock(500, 15000, TimeUnit.MILLISECONDS);
    if (isLock) {
        //实现代码
    }
} catch (Exception e) {
} finally {
    // 最后要解锁
    disLock.unlock();
}

后面尝试一下使用jedis实现分布式锁,那个为了达到操作的原子性,就需要注意很多细节的问题。

欢迎关注我的公众号

只说一点点点点

此项目被张贴在JAVA大数据技术和标记javaredisredission技术缓存 。书签的 permalink

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注

评论

姓名 *

电子邮件 *

站点

在此浏览器中保存我的名字、电邮和网站。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK