没有合适的资源?快使用搜索试试~ 我知道了~
首页Redis使用lettuce和jedis.pdf
资源详情
资源评论
资源推荐
Redis
配置lettuce连接器
Lettuce是一个基于Netty的开源连接器,由Spring Data Redis通过org.springframework.data.redis.connection.lettuce包支
持。以下示例显示如何创建新的Lettuce连接工厂
还有一些lettuce的连接参数可以调整。默认情况下,由LettuceConnectionFactory创建的所有LettuceConnection实例都为所
有非阻塞和非事务操作共享相同的线程安全本机连接。要每次使用专用连接,请将ShareNativeConnection设置为false。如果
shareNativeConnection设置为false,也可以将lettuceConnectionFactory配置为使用lettucePool进行池阻塞和事务连接或所
有连接。
lettuce与netty的本地传输相集成,允许您使用Unix域套接字与redis通信。确保包含与运行时环境匹配的适当本机传输依赖
项。下面的示例演示如何在/var/run/redis.sock为UNIX域套接字创建lettuce连接工厂:
配置Jedis连接器
jedis是一个社区驱动的连接器,由Spring Data Redis模块通过org.springframework.data.redis.connection.jedis包支持。在
最简单的形式中,Jedis配置如下所示:
同时你还想设置密码等host
@Configuration
classAppConfig{
@Bean
publicLettuceConnectionFactoryredisConnectionFactory(){
returnnewLettuceConnectionFactory(newRedisStandaloneConfiguration("server",6379));
}
}
@Configuration
classAppConfig{
@Bean
publicLettuceConnectionFactoryredisConnectionFactory(){
returnnewLettuceConnectionFactory(newRedisSocketConfiguration("/var/run/redis.sock"));
}
}
@Configuration
classAppConfig{
@Bean
publicJedisConnectionFactoryredisConnectionFactory(){
returnnewJedisConnectionFactory();
}
}
**
RedisSentinelConfiguration 也可以使用a定义 PropertySource ,它允许您设置以下属性:配置属性
spring.redis.sentinel.master :主节点的名称。 spring.redis.sentinel.nodes :逗号分隔的主机:端口对列
表。
Redis Sentinel支持
对于处理高可用性的Redis,春季数据Redis的具有用于支撑Redis的哨兵,使用 RedisSentinelConfiguration ,作为显示在下
面的例子:
有时,需要与其中一个Sentinels直接交互。使用 RedisConnectionFactory.getSentinelConnection() 或
RedisConnection.getSentinelCommands() 允许您访问配置的第一个活动Sentinel。
通过RedisTemplate处理对象
大多数用户可能会使用 RedisTemplate 它及其相应的包 org.springframework.data.redis.core 。事实上,该模板是Redis模
块的核心类,因为它具有丰富的功能集。该模板为Redis交互提供了高级抽象。虽然 RedisConnection 提供了接受和返回二进
制值( byte 数组)的低级方法,但模板负责序列化和连接管理,使用户无需处理这些细节。
此外,模板提供操作视图(在Redis命令参考的分组之后),提供丰富的,通用的接口,用于处理特定类型或某些密钥(通过
KeyBound 接口),如下表所述:
/**
*Jedis
*/
@Bean
publicRedisConnectionFactoryjedisConnectionFactory(){
RedisSentinelConfigurationsentinelConfig=newRedisSentinelConfiguration()
.master("mymaster")
.sentinel("127.0.0.1",26379)
.sentinel("127.0.0.1",26380);
returnnewJedisConnectionFactory(sentinelConfig);
}
/**
*Lettuce
*/
@Bean
publicRedisConnectionFactorylettuceConnectionFactory(){
RedisSentinelConfigurationsentinelConfig=newRedisSentinelConfiguration()
.master("mymaster")
.sentinel("127.0.0.1",26379)
.sentinel("127.0.0.1",26380);
returnnewLettuceConnectionFactory(sentinelConfig);
}
接口 描述
密
钥
类
型
操
作
GeoOperations Redis的地理空间操作的,比如 GEOADD , GEORADIUS ...
HashOperations Redis哈希操作
HyperLogLogOperations Redis的HyperLogLog操作,例如 PFADD , PFCOUNT ,...
ListOperations Redis列表操作
SetOperations Redis设置了操作
ValueOperations Redis字符串(或值)操作
ZSetOperations Redis zset(或排序集)操作
键
绑
定
操
作
BoundGeoOperations Redis键绑定地理空间操作
BoundHashOperations Redis散列键绑定操作
BoundKeyOperations Redis键绑定操作
BoundListOperations Redis列出键绑定操作
BoundSetOperations Redis设置键绑定操作
BoundValueOperations Redis字符串(或值)键绑定操作
BoundZSetOperations Redis zset(或有序集)键绑定操作
配置完成后,模板是线程安全的,可以跨多个实例重用。
RedisTemplate 在大多数操作中使用基于Java的序列化程序。这意味着模板编写或读取的任何对象都通过Java进行序列化和反
序列化。您可以更改模板上的序列化机制,Redis模块提供了多个实现,这些实现在
org.springframework.data.redis.serializer 包中提供。有关更多信息,请参阅序列化器 您还可以将任何序列化程序设置
为null,并通过将 enableDefaultSerializer 属性设置为将RedisTemplate与原始字节数组一起使用 false 。请注意,模板要
求所有键都为非null。但是,只要底层序列化程序接受它们,值就可以为null。阅读每个序列化程序的Javadoc以获取更多信
息。
对于需要特定模板视图的情况,请将视图声明为依赖项并注入模板。容器会自动执行转换,从而消除 opsFor[X] 调用,如以下
示例所示:
RedisTemplate的使用功能:
RedisTemplate是操作redis的一个API:先看下RedisTemplate的原码:具体的方法使看原码中的注释
RedisTemplate帮助程序类,用于简化redis数据访问代码。
在给定对象和redis存储中的基础二进制数据之间执行自动序列化/反序列化。默认情况下,它使用对象的Java序列化(通过
JDKSerialIdaseReDeSerialZER)。对于字符串密集型操作,请考虑使用专用的StringRedisTemplate.
中心方法是执行execute(),支持redis访问代码实现redisallback接口。它提供了redis connection处理,这样,无论是
redisallback实现还是调用代码都不需要显式地关心检索/关闭redis连接,或者处理连接生命周期异常。对于典型的单步动作,
有各种方便的方法。
一旦配置,这个类就是线程安全的。
请注意,虽然模板是通用的,但要正确地将给定对象转换为二进制数据或从二进制数据转换为给定对象,则取决于序列化程
序/反序列化程序。
文章中的最主要的方法如下:
在Redis连接中执行给定的操作。只要可能,操作对象引发的应用程序异常就会传播到调用方(只能取消选中)。Redis异
常被转换为适当的DAO异常。允许返回结果对象,即域对象或域对象集合。对适合于redis存储的二进制数据的给定对象执行
自动序列化/反序列化。注意:回调代码不应该处理事务本身!使用适当的事务管理器。通常,回调代码不能接触任何连接生
命周期方法,比如close,以让模板完成其工作。 public T execute(RedisCallback action, boolean exposeConnection,
boolean pipeline) {}
<?xmlversion="1.0"encoding="UTF‐8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring‐beans.xsd">
<beanid="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"p:use‐pool="true"/>
<!‐‐redistemplatedefinition‐‐>
<beanid="redisTemplate"class="org.springframework.data.redis.core.RedisTemplate"p:connection‐factory‐
ref="jedisConnectionFactory"/>
...
</beans>
publicclassExample{
//injecttheactualtemplate
@Autowired
privateRedisTemplate<String,String>template;
//injectthetemplateasListOperations
@Resource(name="redisTemplate")
privateListOperations<String,String>listOps;
publicvoidaddLink(StringuserId,URLurl){
listOps.leftPush(userId,url.toExternalForm());
}
}
执行一个事务,使用默认的redisserializer来反序列化任何属于byte[]s或byte[]s或元组的集合或映射的结果。其他结果类型
(long、boolean等)与转换后的结果相同。如果在RedisonConnectionFactory中禁用了Tx结果的转换,则将返回exec的结
果,而不进行反序列化。此检查主要是为了与1.0向后兼容。
public List exec() {} 执行事务,使用提供的redisserializer反序列化任何字节为[]s的结果或字节为[]s的集合。如果结果是映
射,则提供的redisserializer将用于键和值。其他结果类型(long、boolean等)与转换后的结果相同。元组结果将自动转换
为typedtuples。 public List exec(RedisSerializer<?> valueSerializer) {}
删除 public Boolean delete(K key) {}
删除集合中的key public Long delete(Collection keys) {} 确定给定的键是否存在。 public Boolean hasKey(K key) { } 为
给定的密钥设置生存时间。 public Boolean expire(K key, final long timeout, final TimeUnit unit) { }
为给定的密钥设置生存时间。 public Boolean expireAt(K key, final Date date) {}
将给定消息发布到给定通道。 public void convertAndSend(String channel, Object message) { }
以秒为单位获得钥匙的生存时间。 public Long getExpire(K key) { }
获取生存时间并将其转换为给定的时间单位。 public Long getExpire(K key, final TimeUnit timeUnit) {}
查找与给定模式匹配的所有键。 public Set keys(K pattern) {}
从给定的密钥中删除过期。 public Boolean persist(K key) {}
将给定的键移动到具有索引的数据库。 public Boolean move(K key, final int dbIndex) {}
从键空间返回随机键。 public K randomKey() {}
重命名key public void rename(K oldKey, K newKey) {}
仅当newkey不存在时,才将key olename重命名为newkey。 public Boolean renameIfAbsent(K oldKey, K newKey) {}
确定存储在键处的类型。 public DataType type(K key) {}
执行redis dump命令并返回结果。redis使用非标准的序列化机制并包含校验和信息,因此返回原始字节,而不是使用
valueserializer进行反序列化。使用dump的返回值作为要还原的值参数 public byte[] dump(K key) {}
执行redis还原命令。传入的值应该是从dump(object)返回的准确序列化数据,因为redis使用非标准序列化机制。
public void restore(K key, final byte[] value, long timeToLive, TimeUnit unit) {} 标记事务块的开始命令将排队,然后可以通
过调用redisperations.exec()或使用redisperations.discard()回滚来执行。 public void multi() {}
放弃在redisperations.multi()之后发出的所有命令。 public void discard() {}
在用redisperations.multi()启动的事务期间,观察给定的键是否有修改。 public void watch(K key) {}
刷新所有以前的重读操作。观察(对象)键。
public void unwatch() {}
排序:
为查询对元素排序。 public List sort(SortQuery query) { return sort(query, valueSerializer); }
关闭由客户端中给定的ip:port标识的给定客户端连接。
public void killClient(final String host, final int port) { } 请求有关已连接客户端的信息和统计信息。 @Override
public List getClientList() { return execute(RedisServerCommands::getClientList); }
将redis复制设置更改为新的主服务器。 @Override public void slaveOf(final String host, final int port) {}
将服务器更改为主服务器。 public void slaveOfNoOne() { }
返回特定于群集的操作接口 @Override public ClusterOperations opsForCluster() {
返回特定于地理空间的操作接口。
剩余42页未读,继续阅读
kay三石[AlayKay]
- 粉丝: 82
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0