事务需要开启enableTransactionSupport,然后使用@transactional注解,里面直接通过回调的connection,就不需要自己进行multi和exec的事务开启提交了。但是通过回调去获取connection,完全没有达到一个模版类的功能。所以这篇我们会讲下几种Operations接口提供的方法。
private ValueOperations<K, V> valueOps; private ListOperations<K, V> listOps; private SetOperations<K, V> setOps; private ZSetOperations<K, V> zSetOps;
1. RedisOperations接口说明
这个接口的实现类就是RedisTemplate本身,主要提供了一些对Redis键,事务,运行脚本等命令的支持,不负责数据的读写。
我们选一段代码看下:
public void watch(K key) {
final byte[] rawKey = rawKey(key);
execute(new RedisCallback<Object>() {
public Object doInRedis(RedisConnection connection) {
connection.watch(rawKey);
return null;
}
}, true);
}
这个是事务的监视命令,可以看出,里面的实现也是用的回调RedisCallback。这些api都是通过connection的api来进行了封装。
2. ValueOperations接口说明
这个接口的实现类为DefaultValueOperations,default这个类同时继承AbstractOperation,我们来看下这个类的构造函数:
DefaultValueOperations(RedisTemplate<K, V> template) {
super(template);
}
非公开的,需要传入template来构造。但是我们是无法访问的。不过不要急,在RedisTemplate中,已经提供了一个工厂方法:opsForValue()。这个方法会返回一个默认的操作类。另外,我们可以直接通过注解@Resource(name = "redisTemplate")来进行注入。
@Resource(name = "redisTemplate") private ValueOperations<String, Object> vOps;
是不是很奇怪,毫无父子兄弟关系的两个类,怎么能互相注入呢?这个是Spring的Editor机制,搜索下ValueOperationsEditor这个类就知道了,Spring在注入的时候调用了Editor的setValue方法。了解Spring源码的应该知道。我也是看别人的文章才理解的。
其实除了可以通过template注入ValueOperations,还可以注入 上面的其他几种operations以及HashOperations.
DefaultValueOperations提供了所有Redis字符串类型的操作api。比如set,get,incr等等。使用这些方法,可以方便的直接存储任意的java类型,而不需要自己去将存储的东西序列化以及反序列化。
注意:泛型的类型,以及序列化器都是来自RedisTemplate。如果要自行进行json或者其他的序列化,就需要在RedisTemplate中进行更改。
另外,对于成员listOps,setOps,zSetOps这接个操作类,就不再赘述,原理同ValueOperations,是其他几种数据类型的实现。
3. HashOperations接口说明
这个接口并没有定义成员变量,猜测是因为对于Hash来说,又增加了额外的Key和Value,泛型无法在成员前额外定义,所以直接提供了方法。不过所幸里面用的是JdkSerializer,所以这个定义了什么类型的泛型都不会产生运行异常。
public void put(K key, HK hashKey, HV value) {
final byte[] rawKey = rawKey(key);
final byte[] rawHashKey = rawHashKey(hashKey);
final byte[] rawHashValue = rawHashValue(value);
execute(new RedisCallback<Object>() {
public Object doInRedis(RedisConnection connection) {
connection.hSet(rawKey, rawHashKey, rawHashValue);
return null;
}
}, true);
}
这个是基本的put方法,可以看出key和hashkey这两个,调用了不同的序列化方法。进行方法查看,看到序列化hashkey用的是template里的hashkeyserializer,默认是jdkserializer,这个会导致在redis控制台,看不出来存了什么key。如果不喜欢,可以通过redistemplate.sethashkeyserializer()来进行设置。
对于hash结构所有的api,也都在这个类里进行了封装,比如hset变为了put,hget变为get。需要自行去查看api。不要被误导。
4. 总结
到这里为止,已经把基本的使用都说完了。说的很粗糙,只是把我觉得容易出现误解的点进行了重点说明,基础的操作还需要大家自己稍微看下。权作一个抛砖引玉的作用吧。接下来,可能会总结下在这两个月用Redis遇到的一些问题进行说明。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# redis
# redistemplate
# spring访问redis
# spring
# 使用@Autowired 注入RedisTemplate报错的问题及解决
# Redis官方ORM框架比RedisTemplate更优雅
# 浅谈RedisTemplate和StringRedisTemplate的区别
# Spring RedisTemplate 批量获取值的2种方式小结
# 使用redisTemplate从redis获取所有数据
# Java使用RedisTemplate如何根据前缀获取key列表
# RedisTemplate访问Redis的更好方法
# 序列化
# 几种
# 的是
# 都是
# 回调
# 进行了
# 可以通过
# 可以看出
# 是因为
# 在这个
# 还可以
# 在这
# 就不
# 把我
# 不喜欢
# 其他的
# 抛砖引玉
# 而不
# 这两个
# 也都
相关文章:
建站主机选择指南:服务器配置与SEO优化实战技巧
太原网站制作公司有哪些,网约车营运证查询官网?
常州企业建站如何选择最佳模板?
网站制作壁纸教程视频,电脑壁纸网站?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
建设网站制作价格,怎样建立自己的公司网站?
网站制作公司,橙子建站是合法的吗?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
如何选择适配移动端的WAP自助建站平台?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
如何基于PHP生成高效IDC网络公司建站源码?
如何在Golang中使用replace替换模块_指定本地或远程路径
如何在腾讯云服务器上快速搭建个人网站?
建站之星各版本价格是多少?
如何通过西部数码建站助手快速创建专业网站?
如何在阿里云部署织梦网站?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
PHP 500报错的快速解决方法
建站之星如何快速解决建站难题?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何通过免费商城建站系统源码自定义网站主题与功能?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
建站之星如何保障用户数据免受黑客入侵?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
Android自定义控件实现温度旋转按钮效果
Android自定义listview布局实现上拉加载下拉刷新功能
如何用免费手机建站系统零基础打造专业网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
制作网站外包平台,自动化接单网站有哪些?
如何快速搭建高效简练网站?
如何在万网自助建站中设置域名及备案?
建站之星后台密码遗忘?如何快速找回?
如何做静态网页,sublimetext3.0制作静态网页?
如何配置支付宝与微信支付功能?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
如何用IIS7快速搭建并优化网站站点?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
h5在线制作网站电脑版下载,h5网页制作软件?
简单实现Android验证码
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
官网网站制作腾讯审核要多久,联想路由器newifi官网
网站制作员失业,怎样查看自己网站的注册者?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
寿县云建站:智能SEO优化与多行业模板快速上线指南
建站上传速度慢?如何优化加速网站加载效率?
高端建站三要素:定制模板、企业官网与响应式设计优化
*请认真填写需求信息,我们会在24小时内与您取得联系。