我们在实际的项目应用中,Redis一般都是用来缓存热点数据,一台服务器可能部署了多个应用,应用直接的 Redis 数据需要加上前缀区分开来,我们可以使用序列化的方式,统一为所有的 key 加上前缀

一、关于在 SpringBoot 中整合 Redis

https://lizhou.blog.csdn.net/article/details/98358258

二、关于在 SpringBoot 中整合 Redis 实现序列化存储Java对象

https://lizhou.blog.csdn.net/article/details/109236398

三、基于第二步更改了 Redis 本身的序列化方式的基础上,我们可以自定义序列化的方式

  • 1、自定义序列化方式
package com.asurplus.common.redis;import com.asurplus.common.consts.SystemConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.serializer.RedisSerializer;import java.nio.charset.Charset;/*** 为redis key 统一加上前缀*/
@Slf4j
public class RedisKeySerializer implements RedisSerializer<String> {/*** 编码格式*/private final Charset charset;/*** 前缀*/private final String PREFIX_KEY = "prefix:";public RedisKeySerializer() {this(Charset.forName("UTF8"));}public RedisKeySerializer(Charset charset) {this.charset = charset;}@Overridepublic String deserialize(byte[] bytes) {String saveKey = new String(bytes, charset);int indexOf = saveKey.indexOf(PREFIX_KEY);if (indexOf > 0) {log.error("key缺少前缀");} else {saveKey = saveKey.substring(indexOf);}return (saveKey.getBytes() == null ? null : saveKey);}@Overridepublic byte[] serialize(String string) {String key = PREFIX_KEY + string;return (key == null ? null : key.getBytes(charset));}
}
  • 2、更改 key 的序列化方式
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {// 配置redisTemplateRedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);// 设置序列化Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);jackson2JsonRedisSerializer.setObjectMapper(om);// key序列化,使用自定义序列化方式redisTemplate.setKeySerializer(new RedisKeySerializer());// value序列化redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// Hash key序列化,使用自定义序列化方式redisTemplate.setHashKeySerializer(new RedisKeySerializer());// Hash value序列化redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);redisTemplate.afterPropertiesSet();return redisTemplate;
}
  • 3、使用方式
    存入:
redisTemplate.opsForValue().set("test", "asurplus");

在 Redis 数据库中我们就能看到存储的 key 是:‘prefix:test’,它的 value 是 ‘asurplus’
取出:

redisTemplate.opsForValue().get("test");

获取到的 value是: ‘asurplus’

至此,我们就实现了为 Redis 的 key 统一加上前缀,这样我们多个项目使用同一个 Redis 库时,就方便区分数据了

如您在阅读中发现不足,欢迎留言!!!

【SpringBoot】50、SpringBoot为Redis的key加上前缀相关推荐

  1. Springboot 2.0.x Redis缓存Key生成器,自定义生成器

    文章目录 Springboot 2.0.x Redis缓存Key生成器,自定义生成器 1.默认的Key生成策略 2.重写生成器 3.注册自定义生成器 4.应用 5.在Redis 中Key的显示 Spr ...

  2. redis企业级应用(下)-如何维护redis的key

    2019独角兽企业重金招聘Python工程师标准>>> 在实际项目开发中,我们会有很多的地方会用到redis,当然也会设置很多的key,但是一旦这些key键多起来了难免会造成重复,或 ...

  3. Redis 热 Key 发现以及解决办法

    背景介绍 最近在技术交流微信群里看大家讨论技术,其中有谈到 Redis 热 Key 的一些问题解决方案,我也仔细思考了一下我们目前系统中 Redis 的使用场景,我们是不是也存在热 Key 问题,或者 ...

  4. Redis热key和大key问题

    一.热key问题 热key问题: 在redis数据库中有些访问量特别大的数据,比如热门商品信息.热门话题等,大量的请求去访问redis上的某个特定key,会造成流量过于集中,达到物理网卡或者内存上限, ...

  5. 关于springboot集成redis及关于redis的Key 乱码问题

    一.在pom文件中引入redis <dependency><groupId>org.springframework.boot</groupId><artifa ...

  6. springboot 前缀_Springboot Redis设置key 前缀

    springboot 连接redis 并设置key前缀 properties中配置 #redis redis.masterClusterNodes=10.40.57.197:7000;10.40.57 ...

  7. springboot整合spring Cache(redis)

    前言 前面有介绍过spring整合redis和redis的一些注意点,在实际开发中,spring cache方便简化的缓存操作的大部分内容.通过注解的方式实现缓存. 阅读前推荐先阅读:redis缓存介 ...

  8. SpringBoot自定义注解+AOP+redis实现防接口幂等性重复提交,从概念到实战

    一.前言 在面试中,经常会有一道经典面试题,那就是:怎么防止接口重复提交? 小编也是背过的,好几种方式,但是一直没有实战过,做多了管理系统,发现这个事情真的没有过多的重视. 最近在测试过程中,发现了多 ...

  9. Springboot Spring Security +Jwt+redis+mybatisPlus 动态完成 前后端分离认证授权

    Springboot Spring Security +Jwt 动态完成 前后端分离认证授权 文章目录 Springboot Spring Security +Jwt 动态完成 前后端分离认证授权 前 ...

最新文章

  1. 腾讯开源基于 mmap 的高性能 key-value 组件 MMKV
  2. 周末一起用文本数据库玩玩Code First
  3. Python爬虫学习获取腾讯新闻并存入Csv文件
  4. 《系统集成项目管理工程师》必背100个知识点-21监控项目工作ITTO
  5. 深入了解回调函数Java
  6. 案例:返回浏览器需要的页面http服务器-代码实现
  7. arcgis引用样式无符号_【技术积累】arcgis制图应用:符号制作
  8. 客服顾问的工具箱--走出软件作坊:三五个人十来条枪 如何成为开发正规军(六)[转]...
  9. STL_set/vector/deque
  10. CTF中常见Web源码泄露总结
  11. fastjson生成json时Null属性不显示
  12. BUPT复试专题—C翻转(2010)
  13. 【Spring】Spring常用配置-Bean的初始化和销毁(生命周期)
  14. Android初学第32天
  15. strstr区分大小写吗_ONU、机顶盒、路由器,遇到问题你会处理了吗?
  16. 如何协助 MySQL 实现 Oracle 高级分析函数
  17. myeclipse安装maven
  18. 企业全面运营管理沙盘模拟心得_企业沙盘模拟心得感受
  19. 51单片机入门学习 第九天
  20. vue源码解析-实现

热门文章

  1. 地理位置处理---Redis的GeoHash和MySQL的geography类型(之后有空再详细介绍)
  2. 指针、结构体、枚举类和文件
  3. android的spinner字体控制
  4. 2019年“华为杯”研究生数学建模竞赛--E题(全球变暖)思路感想
  5. java笔试题---用*打印漏斗形,信雅达笔试题
  6. Linux ALSA声卡驱动之五:Machine 以及ALSA声卡的注册
  7. 【打卡】21天学习挑战赛—RK3399平台开发入门到精通-day9
  8. 安卓的BP、AP、NV是什么意思
  9. 为什么公司宁可高薪招一个新员工,也不愿意给老程序员涨一点工资?
  10. nlp中文本相似度匹配