手牵手SpringBoot2集成Redis7

news2024/11/16 9:41:48

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis是一个NoSQL数据库,常用缓存(cache)

Redis数据类型:string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)

Redis是一个中间件

同步数据(实时性同步数据、阶段性同步数据)

Centos7安装配置Redis7

审核中https://bbs.huaweicloud.com/blogs/396596

手拉手Centos7安装配置Redis7_QGS-CD的博客-CSDN博客手拉手Centos7安装配置Redis7https://blog.csdn.net/weixin_47268883/article/details/130116247?spm=1001.2014.3001.5501

Redis依赖项

spring-boot-starter-data-redis

application.properties配置redis

server.port=8080

server.servlet.context-path=/boot

#启用HiddenHttpMethodFilter过滤器

spring.mvc.hiddenmethod.filter.enabled=true

#指定redis

spring.redis.host=IP

spring.redis.port=6379

spring.redis.password=pwd

html

<body>
    add:<form action="/boot/add" method="post">
       name:<input type="text" name="name">
        value:<input type="text" name="value">
        <input type="submit" value="submit">
    </form>

    select:<form action="/boot/selectRedis" method="get">
        key:<input type="text" name="key">
            <input type="submit" value="submit">
           </form>
</body>

@RestController

public class ControllerA {

    @Resource

    private RedisTemplate redisTemplate;

    //RedisTemplate<String ,String> redisTemplate;

    @Resource

    private StringRedisTemplate stringRedisTemplate;
    //添加数据

    @PostMapping("/add")

    public String add(String name,String value){

        操作redis中String类型的数据

        ValueOperations<String, String> stringValueOperations = redisTemplate.opsForValue();

        stringValueOperations.set(name,value);

        return "添加数据到redis"+value;

    }

    //获取数据

    @GetMapping("/selectRedis")

    public String selectRedis(String key){

        ValueOperations valueOperations = redisTemplate.opsForValue();

        Object value = valueOperations.get(key);

        return "查询redis数据:"+value;

    }
}

向Redis添加数据

ValueOperations<String, String> stringValueOperations = redisTemplate.opsForValue();

stringValueOperations.set(name,value);

 

向Redis获取数据

ValueOperations valueOperations = redisTemplate.opsForValue();

Object value = valueOperations.get(key);

RedisTemplate序列化

序列化:把对象转化为可传输的字节序列过程。

反序列化:将字节序列还原为对象的过程。

redisTemplate: 将key,value经过序列化存储到redis,key,value,可读性不强。

stringRedisTemplate:将key,value作为String处理,使用的是String序列化,可读性好

序列化的方式

序列化是一种拆装组装对象的规则,常见的序列化方式:JDK、JSON、XML、Hessian、kryo、Thrift、Protofbuff等

Java序列化:将java对象转为byte[],二进制数据

JSON序列化:JSON序列化功能将对象转换为JSON格式或从JSON格式转换对象。

@PostMapping("/add2")

public String add2(String key,String value){

    stringRedisTemplate.opsForValue().set(key,value);

return value+"添加成功:";

}
@GetMapping("/select")

public String select(String key){

    String s = stringRedisTemplate.opsForValue().get(key);

    return "查询到数据:"+s;

}

设置RedisTemplate序列化

redisTemplate默认使用jdk序列化。

//设置redisTemplate序列化  既可以设置key序列化,也可以设置value序列化

@PostMapping("/add/serializer/{key}/{value}")

public String setSerializer(@PathVariable String key,@PathVariable String value){

    //redisTemplate设置key的序列化

    redisTemplate.setKeySerializer(new StringRedisSerializer());

    //设置value序列化

    redisTemplate.setValueSerializer(new StringRedisSerializer());

    redisTemplate.opsForValue().set(key,value);

    return "redisTemplate设置key value的序列化"+key+value;

}

stringRedisTemplate生成序列化版本号

安装GenerateSerialVersionUID插件

JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

json序列化与反序列化

//json序列化

@PostMapping("/add/json")

public  String addJson(){

    Staff staff =new Staff();

    staff.setId(001);

    staff.setName("张三");

    staff.setDiploma("本科");

    staff.setTitle("高级");

    staff.setMarriage("已婚");

    staff.setStatus("在职");

    staff.setWorktime("2023-10-1");

    redisTemplate.setKeySerializer(new StringRedisSerializer());

    //将value值作为json序列化

    redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Staff.class));

    redisTemplate.opsForValue().set("staff01",staff);

    return "staff对象json序列化";

}

//json反序列化

@GetMapping("/add/opoJsonSer")

public  String jsonOppositeSerializer(){

    redisTemplate.setKeySerializer(new StringRedisSerializer());

    //将value值作为json序列化

    redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Staff.class));

    Staff staff01 = (Staff)redisTemplate.opsForValue().get("staff01");

    return "json反序列化:"+staff01.getName();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

注册苹果开发者账号的方法

在2020年以前&#xff0c;注册苹果开发者账号后&#xff0c;就可以生成证书。 但2020年后&#xff0c;因为注册苹果开发者账号需要使用Apple Developer app注册开发者账号&#xff0c;所以需要缴费才能创建ios证书了。 所以新政策出来后&#xff0c;注册苹果开发者账号&#…

2023年2月安全更新补丁

一、2023年2月安全更新补丁 近日&#xff0c;微软发布了2023年2月安全更新补丁&#xff0c;共发布了75个漏洞的补丁程序&#xff0c;其中18个漏洞值得关注&#xff08;包括个7严重漏洞、11个重要漏洞&#xff09; Microsoft Windows是美国微软公司以图形用户界面为基础研发的…

SSM学习记录7:通过cdn引入vue进行使用

通过cdn引入vue进行使用 引入vue 和 vue-router&#xff0c;注&#xff1a;vue的版本要比router版本低一个版本&#xff0c;例vue2配router3 <!-- import Vue before Element --><script src"https://cdn.jsdelivr.net/npm/vue2.7.14"></script>&…

CloudEon云原生大数据平台

文章目录 [toc] 1. CloudEon是什么&#xff1f;2. gitHub地址和官网地址3. 官网教程4. 特性5. 架构6. 支持组件版本7. 安装部署7.1 部署前提7.1.1 Kubernetes环境准备&#xff08;必须&#xff09;7.1.2 SSH服务准备&#xff08;必须&#xff09;7.1.3 数据库环境准备&#xff…

【学习笔记】websocket数据帧

介绍 RFC官网给出的数据帧格式 字段解释 FIN&#xff08;1bit&#xff09;: 标记位&#xff0c;表示该数据帧是否为完整消息最后的数据帧。RSV1/2/3&#xff08;各1bit&#xff09;: 标记位&#xff0c;根据RFC的介绍&#xff0c;这三个bit位是用做扩展用途&#xff0c;没有…

rslidar_SDK二次开发

rslidar_SDK代码二开注意事项 文章目录 rslidar_SDK代码二开注意事项0.下载地址1.CMakeLists.txt1.1 Cmake里面&#xff0c;首先选择编译方式&#xff0c;原始ORIGINAL还是CATKIN&#xff0c;还是COLCON1.2 增加新增cpp文件位置1.3 如果选择ORIGINAL模式&#xff0c;需要额外增…

LabView中数组的使用2-1

在LabView中&#xff0c;数组用来管理相同类型的数据。 1 在前面板中创建数组 1.1 创建空数组 在前面板中创建数组时&#xff0c;首先在前面板中点击鼠标右键&#xff0c;弹出“控件”对话框&#xff0c;之后选择“新式->数组、矩阵与簇->数组”&#xff0c;在前面板中…

硬盘格式化工具,强烈推荐这个!

案例&#xff1a;硬盘格式化工具推荐 【我的电脑已经用了好几年了&#xff0c;硬盘存储容量严重不够了&#xff0c;最近想把它格式化&#xff0c;但却不知道怎么操作&#xff0c;大家有什么比较好的硬盘格式化工具可以推荐吗&#xff1f;】 硬盘作为存储设备&#xff0c;我们…

薄膜热电化学电池性能测试中的半导体制冷片高精度度温度控制解决方案

摘要&#xff1a;电化学热电池&#xff08;electrochemical thermcells&#xff09;作为用于低品质热源的热电转换技术&#xff0c;是目前可穿戴电子产品的研究热点之一&#xff0c;使用中要求具有一定的温差环境。电化学热电池相应的性能测试就对温度和温差形成提出很高要求&a…

11、HOOK原理上

一、HOOK 1.1 HOOK简介 HOOK,中文译为“挂钩”或“钩子”.在iOS逆向中是指改变程序运行流程的一种技术.通过hook可以让别人的程序执行自己所写的代码. 在逆向中经常使用这种技术重点要了解其原理,这样能够对恶意代码进行有效的防护. 1.2 Hook的应用场景 描述一个HOOK实用技…

由表及里的解读数据仓库

数据仓库作为商业智能BI系统中的一部分&#xff0c;已经成长为了企业信息化建设中必不可少的重要支撑&#xff0c;在可见的未来&#xff0c;数据仓库还会随着信息化、数字化技术、理念、应用的落地&#xff0c;继续成长。 数据仓库是一个面向主题的、集成的、随时间变化但信息…

jd侧边栏以及模态框样式设置

点击图像出现模态框&#xff0c;点击按钮叉叉模态框消失 html css样式&#xff1a; <style> * { padding: 0; margin: 0; } html, body { height: 100%; width: 100%; } li { list-style: none; } .box { position: fixed; bottom: 120px; right: -10px; width: 200px; }…

看完这篇 HTTPS,和面试官扯皮就没问题了

看完这篇 HTTPS&#xff0c;和面试官扯皮就没问题了 下面我们来一起学习一下 HTTPS &#xff0c;首先问你一个问题&#xff0c;为什么有了 HTTP 之后&#xff0c;还需要有 HTTPS &#xff1f;我突然有个想法&#xff0c;为什么我们面试的时候需要回答标准答案呢&#xff1f;为什…

零成本教你部署一个ChatGPT网站

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

BPMN绘制流程的项目推荐

项目简介 Vite Vue Bpmn流程编辑器&#xff0c;基于Bpmn.js&#xff0c; Vite&#xff0c; Vue.js 3.x, Naiveui 实现了 Bpmn.js 和 Diagram.js 的 typescript 类型声明&#xff0c;typescript 可以用来在编辑器中编写代码。 整合项目地址&#xff1a; https://github.com/m…

【JavaScript】4.JavaScript对象

JavaScript 对象 1. 对象 在 JavaScript 中&#xff0c;对象是一组无序的相关属性和方法的集合&#xff0c;所有的事物都是对象&#xff0c;例如字符串、数值、数组、函数等 对象是由属性和方法组成的。 属性&#xff1a;事物的特征&#xff0c;在对象中用属性来表示&#x…

浅谈兼容性测试

兼容性测试的概念 兼容性测试是一种软件测试&#xff0c;用于确保构建的系统/应用程序/网站与其他各种对象&#xff08;如其他网络浏览器、硬件平台、用户、操作系统等&#xff09;的兼容性。这种类型的测试有助于了解产品在特定环境中的表现。 为了方便理解&#xff0c;可以…

java String 和ArrayList转换 换化

[Ljava.lang.String; cannot be cast to java.util.List 原因&#xff1a; Map<String, Object> parameters (Map<String, Object>) jsonResult.getData(); parameters 参数中refrenceIds 是个string &#xff08;比如&#xff1a;"refrenceIds": [&…

媒体查询神器:掌握 CSS3 变革性技术

媒体查询是 CSS3 中的一项重要功能&#xff0c;它使得我们可以针对不同设备和屏幕尺寸应用不同的样式。本文将深入介绍媒体查询的使用方法&#xff0c;以及如何利用媒体查询优化响应式设计。 什么是媒体查询&#xff1f; 媒体查询是 CSS3 的一项新特性&#xff0c;允许我们根据…

聚类算法:Kmeans和Kmeans++算法精讲

前言 其实Kmesns聚类算法在YOLOv2&#xff08;【YOLO系列】YOLOv2论文超详细解读&#xff08;翻译 &#xff0b;学习笔记&#xff09;&#xff09;中我们就见到了&#xff0c;那时候只是简单地了解了一下。后来在这学期的数据挖掘课程的期末汇报中&#xff0c;我又抽中了这个算…