redisson版本_Redis客户端redisson实战

本文介绍了Redis客户端Redisson的使用,包括在Java中直接操作和Spring集成的方式,涵盖了单节点、哨兵和集群三种部署方式的配置与操作示例。同时提到了Redisson的商业版特性以及配置参数的分类。
摘要由CSDN通过智能技术生成

redis客户端redisson实战

1.前言

Redisson是一个基于java编程框架netty进行扩展了的redis,想了解Redisson源码首先你必须熟悉netty网络编程框架。html

Redisson目前分开源版本和商业版(Redisson PRO),因此选择的时候请谨慎。(Map)和集(Set)数据分片功能仅限于Redisson PRO版本才有,另外Redis部署工具和集群管理工具功能仅限于Redisson PRO版本才有。关于商业版和开源版本的区别和商业版收费标准详见官网(https://redisson.pro/)  java

2.maven项目集成redisson

根据本身JDK环境,JDK 1.8+以上请选择3.5.4版本,JDK 1.6+以上请选择2.10.4版本 node

org.redisson

redisson

3.5.4

org.redisson

redisson

2.10.4

3.利用redisson API操做各类redis部署的服务端

redis的部署方式有单节点部署、哨兵方式部署、集群方式部署3种方式,这3中方式都使用的是原生的redis;linux

基于单节点部署为了保证数据的备份,通常会添加一个节点做为slave来备份master节点上的数据,这里就衍生出了主从部署方式;git

云服务商像阿里云、微软云和亚马逊云都基于原生redis作了高可用部署,为了能链接云服务商的redis服务,这里redisson也提供了API操做方式。github

下面以向redis服务端进行操做set key value为例进行说明如何使用redisson的APIredis

3.1 单节点部署方式(standalone)

(1)纯java操做spring

//建立配置

Config config = new Config();

//指定编码,默认编码为org.redisson.codec.JsonJacksonCodec

//以前使用的spring-data-redis,用的客户端jedis,编码为org.springframework.data.redis.serializer.StringRedisSerializer

//改用redisson后为了之间数据能兼容,这里修改编码为org.redisson.client.codec.StringCodec

config.setCodec(new org.redisson.client.codec.StringCodec());

//指定使用单节点部署方式

config.useSingleServer().setAddress("redis://127.0.0.1:6379");

//config.setPassword("password")//设置密码

config.setConnectionPoolSize(500)//设置对于master节点的链接池中链接数最大为500

config.setIdleConnectionTimeout(10000)//若是当前链接池里的链接数量超过了最小空闲链接数,而同时有链接空闲时间超过了该数值,那么这些链接将会自动被关闭,并从链接池里去掉。时间单位是毫秒。

config.setConnectTimeout(30000)//同任何节点创建链接时的等待超时。时间单位是毫秒。

config.setTimeout(3000)//等待节点回复命令的时间。该时间从命令发送成功时开始计时。

config.setPingTimeout(30000)

config.setReconnectionTimeout(3000)//当与某个节点的链接断开时,等待与其从新创建链接的时间间隔。时间单位是毫秒。

//建立客户端(发现建立RedissonClient很是耗时,基本在2秒-4秒左右)

RedissonClient redisson = Redisson.create(config);

//首先获取redis中的key-value对象,key不存在不要紧

RBucket keyObject = redisson.getBucket("key");

//若是key存在,就设置key的值为新值value

//若是key不存在,就设置key的值为value

keyObject.set("value");

//最后关闭RedissonClient

redisson.shutdown();

(2)spring集成操做

pom.xml编程

org.redisson

redisson

2.10.4

org.springframework

spring-core

4.2.8.RELEASE

org.springframework

spring-beans

4.2.8.RELEASE

org.springframework

spring-context

4.2.8.RELEASE

spring-redisson.xmljson

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:redisson="http://redisson.org/schema/redisson"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://redisson.org/schema/redisson

http://redisson.org/schema/redisson/redisson.xsd">

name="aliasName1,aliasName2"

codec-ref="stringCodec">

connection-pool-size="500"

idle-connection-timeout="10000"

connect-timeout="10000"

timeout="3000"

ping-timeout="30000"

reconnection-timeout="30000"

database="0"/>

SpringRedissonTest.java

import org.redisson.api.RBucket;

import org.redisson.api.RedissonClient;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringRedissonTest {

public static void main(String[] args) {

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring-redisson.xml");

RedissonClient redisson = (RedissonClient) applicationContext.getBean("standalone");

// 首先获取redis中的key-value对象,key不存在不要紧

RBucket keyObject = redisson.getBucket("key");

// 若是key存在,就设置key的值为新值value

// 若是key不存在,就设置key的值为value

keyObject.set("value");

}

}

3.2 哨兵部署方式(sentinel)

(1)纯java操做

//建立配置

Config config = new Config();

//指定编码,默认编码为org.redisson.codec.JsonJacksonCodec

//以前使用的spring-data-redis,用的客户端jedis,编码为org.springframework.data.redis.serializer.StringRedisSerializer

//改用redisson后为了之间数据能兼容,这里修改编码为org.redisson.client.codec.StringCodec

config.setCodec(new org.redisson.client.codec.StringCodec());

//指定使用哨兵部署方式

config.useSentinelServers()

//设置sentinel.conf配置里的sentinel别名

//好比sentinel.conf里配置为sentinel monitor my-sentinel-name 127.0.0.1 6379 2,那么这里就配置my-sentinel-name

.setMasterName("my-sentinel-name")

//这里设置sentinel节点的服务IP和端口,sentinel是采用Paxos拜占庭协议,通常sentinel至少3个节点

//记住这里不是配置redis节点的服务端口和IP,sentinel会本身把请求转发给后面monitor的redis节点

.addSentinelAddress("redis://127.0.0.1:26379")

.addSentinelAddress("redis://127.0.0.1:26389")

.addSentinelAddress("redis://127.0.0.1:26399");

//config.setPassword("password")//设置密码

config.setMasterConnectionPoolSize(500)//设置对于master节点的链接池中链接数最大为500

config.setSlaveConnectionPoolSize(500)//设置对于slave节点的链接池中链接数最大为500

config.setIdleConnectionTimeout(10000)//若是当前链接池里的链接数量超过了最小空闲链接数,而同时有链接空闲时间超过了该数值,那么这些链接将会自动被关闭,并从链接池里去掉。时间单位是毫秒。

config.setConnectTimeout(30000)//同任何节点创建链接时的等待超时。时间单位是毫秒。

config.setTimeout(3000)//等待节点回复命令的时间。该时间从命令发送成功时开始计时。

config.setPingTimeout(30000)

config.setReconnectionTimeout(3000)//当与某个节点的链接断开时,等待与其从新创建链接的时间间隔。时间单位是毫秒。

//建立客户端(发现这一很是耗时,基本在2秒-4秒左右)

RedissonClient redisson = Redisson.create(config);

//首先获取redis中的key-value对象,key不存在不要紧

RBucket keyObject = redisson.getBucket("key");

//若是key存在,就设置key的值为新值value

//若是key不存在,就设置key的值为value

keyObject.set("value");

//最后关闭RedissonClient

redisson.shutdown();

(2)spring集成操做

pom.xml

org.redisson

redisson

2.10.4

org.springframework

spring-core

4.2.8.RELEASE

org.springframework

spring-beans

4.2.8.RELEASE

org.springframework

spring-context

4.2.8.RELEASE

spring-redisson.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:redisson="http://redisson.org/schema/redisson"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://redisson.org/schema/redisson

http://redisson.org/schema/redisson/redisson.xsd">

slaveConnectionPoolSize="500"

masterConnectionPoolSize="500"

idle-connection-timeout="10000"

connect-timeout="10000"

timeout="3000"

ping-timeout="1000"

reconnection-timeout="3000"

database="0">

SpringRedissonTest.java

import org.redisson.api.RBucket;

import org.redisson.api.RedissonClient;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringRedissonTest {

public static void main(Strin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值