StringRedisTemplate操作redis数据

news/2024/7/24 9:31:44 标签: java, redis

原文链接:https://www.cnblogs.com/java-gcs/p/11024530.html

StringRedisTemplate与RedisTemplate区别点

  • 两者的关系是StringRedisTemplate继承RedisTemplate。
  • 两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。
  • 其实他们两者之间的区别主要在于他们使用的序列化类:
    1、RedisTemplate使用的是JdkSerializationRedisSerializer
    2、存入数据会将数据先序列化成字节数组然后在存入Redis数据库。
    StringRedisTemplate使用的是StringRedisSerializer
  • 使用时注意事项:
    1、当你的redis数据库里面本来存的是字符串数据或者你要存取的数据就是字符串类型数据的时候,那么你就使用StringRedisTemplate即可。
    2、但是如果你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象,那么使用RedisTemplate是更好的选择。
  • RedisTemplate使用时常见问题:redisTemplate 中存取数据都是字节数组。当redis中存入的数据是可读形式而非字节数组时,使用redisTemplate取值的时候会无法获取导出数据,获得的值为null。可以使用 StringRedisTemplate 试试。

RedisTemplate中定义了5种数据结构操作

redisTemplate.opsForValue();  //操作字符串
redisTemplate.opsForHash();   //操作hash
redisTemplate.opsForList();   //操作list
redisTemplate.opsForSet();   //操作set
redisTemplate.opsForZSet();   //操作有序set

StringRedisTemplate常用操作

java">stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间  

stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作

stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val

stringRedisTemplate.boundValueOps("test").increment(1);//val +1

stringRedisTemplate.getExpire("test")//根据key获取过期时间

stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位 

stringRedisTemplate.delete("test");//根据key删除缓存

stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值 

stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合

stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间

stringRedisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据

stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合

个人使用

java">// 线上环境access_token过期时间30天, 客户端可自行缓存,过期后重新获取。
String accessToken = stringRedisTemplate.opsForValue().get("baiduAccessToken");
if (StringUtils.isEmpty(accessToken)){
    accessToken = AuthService.getAuth();
    stringRedisTemplate.opsForValue().set("baiduAccessToken", accessToken);
    stringRedisTemplate.expire("baiduAccessToken", 29, TimeUnit.DAYS);
}

http://www.niftyadmin.cn/n/1691241.html

相关文章

java实训项目_JAVA学习那些事:好比是打怪升级,修炼升仙的过程

对于学习任何新的知识来说,都有自学和教学(学校教学)两种学习方式。教学方式肯定简单,只要交学费按照老师的章程和计划来学习。针对想自学JAVA的人来说,这个肯定有些难度,毕竟JAVA是一门思维逻辑强的专业技能知识。不过你的好学心…

datagrid jeesite 子表显示到datagrid_基于 Angular Material 的 Data Grid 设计实现

自 Extensions 组件库发布以来,Data Grid 成为了使用及咨询最多的组件。最开始 Data Grid 的设计非常简陋,经过一番重构,组件质量已经有了质的提升。Extensions 组件库:https://github.com/ng-matero/extensionsData Grid 示例&am…

python案例演示_Python之time模块案例演示

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼案例01: 2008年8月8日20:08:08 往后88,888,888秒是哪天?星期几?日期->时间戳(浮点数)->可以做数学运算演示:import time# 构造日期的元组,元组必须是9位标准的tuple01 (2008, …

SQL查询出来的时间和数据库存的时间不一致问题解决

参考一:https://blog.csdn.net/Tony_wang000/article/details/105514640?utm_mediumdistribute.pc_relevant.none-task-blog-baidujs_title-0&spm1001.2101.3001.4242 参考二:https://blog.csdn.net/q283614346/article/details/90737288 原因一&a…

Base64转MultipartFile

最近做了一个h5人脸采集demo,后端调用百度人脸检测API对图片质量进行把控,图片参数可以是base64类型或者URL形式。前端把图片压缩然后转为base64传回后端,后端进行质量检测合格后把base64转为MultipartFile上传到文件服务器。 Base64转Multi…

Java实现使用Modbus4j+seroUtils读取Mudbus RTU/ASCII Over TCP/IP连接设备数据

使用Modbus4jseroUtils读取风速风向仪数据,现有设备IP,端口号,从机地址,寄存器读取开始地址,读取的寄存器数量。没有上述jar包可以自行搜索,网上资源挺多 /*** author chengy*/ Component public class Mod…

解决Spring RestTemplate请求相应内容中文乱码问题

参考:https://www.cnblogs.com/BillyYoung/p/10737081.html 1、原因 RestTemplate的默认构造方法初始化的StringHttpMessageConverter的默认字符集是ISO-8859-1,所以导致RestTemplate请求的响应内容会出现中文乱码。 2、解决方法 Springboot中Bean配…

RestTempLate 请求头、参数、请求体设置

参考:https://blog.csdn.net/qq_35642849/article/details/103821900 应用场景:通过微信公众号access_token接口获取到token,然后查询公众号的文章列表。 //region 2.获取文章列表String articleUrl "https://api.weixin.qq.com/cgi-bi…