spring-data-redis 使用过程中需要注意的地方
1.序列化问题
<!-- SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。就是因为序列化策略的不同,即使是同一个key用不同的Template去序列化,结果是不同的。所以根据key去删除数据的时候就出现了删除失败的问题。 --><!-- redis 序列化策略 ,通常情况下key值采用String序列化策略, --><!-- 如果不指定序列化策略,StringRedisTemplate的key和value都将采用String序列化策略; --><!-- 但是RedisTemplate的key和value都将采用JDK序列化 这样就会出现采用不同template保存的数据不能用同一个template删除的问题 --><bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer" /><bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"><property name="connectionFactory" ref="connectionFactory" /> <property name="keySerializer" ref="stringRedisSerializer" /><property name="hashKeySerializer" ref="stringRedisSerializer" /><property name="valueSerializer" ref="stringRedisSerializer"/></bean>
2. 设置一个键值及其过期时间
错误的设置方式:
/*** Overwrite parts of {@code key} starting at the specified {@code offset} with given {@code value}.** @param key must not be {@literal null}.* @param value* @param offset* @see <a href="http://redis.io/commands/setrange">Redis Documentation: SETRANGE</a>*/void set(K key, V value, long offset);
正确的设置方式:
/*** Set the {@code value} and expiration {@code timeout} for {@code key}.** @param key must not be {@literal null}.* @param value* @param timeout* @param unit must not be {@literal null}.* @see <a href="http://redis.io/commands/setex">Redis Documentation: SETEX</a>*/void set(K key, V value, long timeout, TimeUnit unit);
3.模糊删除
错误的方式:
Set<String> keys=redisTemplate.keys(prex+"*");/*for test *Iterator<String> it=keys.iterator();* while(it.hasNext()){redisTemplate.delete((String)it.next());}*/
正确的方式:
Set<String> keys=redisTemplate.keys(prex+"*");redisTemplate.delete(keys);
参考文献:
【1】http://www.cnblogs.com/shihaiming/p/6019795.html
【2】
转载于:https://www.cnblogs.com/davidwang456/p/6756082.html
spring-data-redis 使用过程中需要注意的地方相关推荐
- Spring Data Redis:Sentinel的高可用性
1.概述 为了使Redis具有高可用性,我们可以使用Spring Data Redis对Redis Sentinel的支持. 借助Sentinel,我们可以创建自动抵御某些故障的Redis部署. Re ...
- 使用Spring Data Redis进行缓存
在下面的示例中,我将向您展示如何使用Spring Data – Redis项目作为Spring 3.1中引入的Spring Cache Abstraction的缓存提供程序. 我对如何使用Spring ...
- Spring Data Redis学海拾贝
简介: Redis redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写.企业开发通常采用Redis来实现缓存.同类的产品还有memcache .memcached .Mo ...
- Spring Data Redis 多源
完整代码:Ciiiiing/springboot_multi_redis 最近需要在同一个项目中访问多个 redis 而 spring data redis 默认是只支持一个数据源的,那就需要我们自己 ...
- Spring Data Redis 正确使用姿势
课程简介 本课程主要讲解常规 Redis 的写法,Redis 和 Spring 的结合使用,即 Spring Data Redis,以及 Redis 在工作中的正确使用姿势,Redis 和 Sprin ...
- 使用Spring Data Redis操作Redis(集群版)
说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Sp ...
- Redis - Spring Data Redis 操作 Jedis 、Lettuce 、 Redisson
文章目录 官网 Jedis VS Lettuce Jedis Code POM依赖 配置文件 配置类 单元测试 Lettuce Code Redisson Code POM依赖 配置文件 配置类 单元 ...
- Spring Boot使用Spring Data Redis操作Redis(单机/集群)
说明:Spring Boot简化了Spring Data Redis的引入,只要引入spring-boot-starter-data-redis之后会自动下载相应的Spring Data Redis和 ...
- Java Spring Data Redis实战与配置参数详解 application.properties...
Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...
- Spring Data Redis与Jedis的选择(转)
说明:内容可能有点旧,需要在业务上做权衡. Redis的客户端有两种实现方式,一是可以直接调用Jedis来实现,二是可以使用Spring Data Redis,通过Spring的封装来调用.应该使用哪 ...
最新文章
- 欢迎加入北京智源AI社群
- 引用变量和指针变量初探
- Javascript代码在线整理工具源码
- usb转ttl模块与matlab,USB接口转TTL小板的自检测试
- linux 天文软件,新闻|开源新闻速递:天文软件 Stellarium 0.15.0 发布
- 贪心——雪糕的最大数量(Leetcode 1833)
- LeetCode-116. 填充每个节点的下一个右侧节点指针
- matlab 程序 收缩,基于MATLAB的小波收缩去噪方法研究(程序)
- 2021年了,Transformer有可能替代CNN吗?未来有哪些研究方向?
- idea 格式化代码时, 不换行
- C++中常用的库函数 (自用)
- retrofit + rxjava2报错java.lang.IllegalStateException:Excepted a String but was BEGIN_OBJECT at line..
- 在SQL Server 2000里设置和使用数据库复制
- python中idle什么意思_python的idle是什么
- 数据库系统原理与应用教程(031)—— MySQL 的数据完整性(四):定义外键(FOREIGN KEY)
- python从入门到精通-张子夜-专题视频课程
- VB→C++→C#→VB.NET,语言的共性和个性
- Work20230405
- A072_前台登录_三方登录
- 怎么取消微信送票服务器,微信抢火车票怎么取消?有什么要注意的吗?
热门文章
- html input submit 执行,HtmlInputSubmit 服务器控件声明性语法
- 小而美的个人博客——前端——blog
- 安卓实训项目:音乐播放器2.0——实训报告2
- unity中单位是米还是厘米_数学单位换算公式口诀
- 白大脑比超级计算机还,和超级计算机相比,人类的大脑很弱吗
- linux snmp设置报警次数,CentOS/RHEL 6下禁止重复的SNMP连接日志
- java线程栅栏_Java 多线程基础 - CyclicBarrier
- java与室内设计_【Java JDK和躺平设计家3D室内设计哪个好用】Java JDK和躺平设计家3D室内设计对比-ZOL下载...
- rdd数据存内存 数据量_spark系列:spark core 数据交互技术点(数据模型)
- java和python都要掌握_如果两者都决定要学的话,先学Java还是Python?