当前位置: 首页 > news >正文

13.StringRedisTemplete使用

上一篇说到改变了RedisTemplate的默认序列化器后,在redis中存入Java对象后,在redis中的呈现是:会记录类的字节码

 这也是代码中可以强制装换为对应的java对象的原因:

@Test
void testStudent() {redisTemplate.opsForValue().set("student:100", new Student("小明", 22));Student student = (Student) redisTemplate.opsForValue().get("student:100");System.out.println("student="+student);
}

 存在的问题:

因为每个对象都要存入class,随着对象越来越多也会带来内存额外的开销。

所以,为了节省空间,不会使用json的序列化器来处理value,而是统一使用String序列化器,要求只能存储String类型的key和value,当需要存储java对象时,手动完成对象的序列化和反序列化。

Spring默认提供了一个StringRedisTemplate类,它的key和value的序列化方式默认就是String方式,省去了我们自己定义RedisTemplate过程:

@Autowiredprivate StringRedisTemplate stringRedisTemplate;//json工具ObjectMapper objectMapper = new ObjectMapper();@Testvoid testJava() throws JsonProcessingException {//手动将java对象转成json字符串String studentJson = objectMapper.writeValueAsString(new Student("晓东", 11));//写入一条数据到redisstringRedisTemplate.opsForValue().set("student:200",studentJson);//读取数据String studentJsonStr = stringRedisTemplate.opsForValue().get("student:200");//手动将json数据转成java对象Student student = objectMapper.readValue(studentJsonStr, Student.class);System.out.println("student="+student);}

 

存入单个key-value、key-java对象都是可以的。

操作Hash类型的数据

 @Testvoid testHash() {stringRedisTemplate.opsForHash().put("user:400", "name", "张大大");stringRedisTemplate.opsForHash().put("user:400", "age", "18");//获取key对应所有的hash key valueMap<Object, Object> entries = stringRedisTemplate.opsForHash().entries("user:400");entries.forEach((key, value)-> System.out.println(key+"--"+value));}

这里注意存入hash的value需要时String类型,比如上面的18,不能写数字18,而是要写字符串18。

相关文章:

13.StringRedisTemplete使用

上一篇说到改变了RedisTemplate的默认序列化器后&#xff0c;在redis中存入Java对象后&#xff0c;在redis中的呈现是&#xff1a;会记录类的字节码 这也是代码中可以强制装换为对应的java对象的原因&#xff1a; Test void testStudent() {redisTemplate.opsForValue().set(&q…...

[工具]-gitee+pycharm-配置

安装git ​ 查看git是否安装设置成功&#xff1a; ​ git config user.name ​ git config user.email ​ 码云账号设置邮箱 pycharm设置gitee 打开 PyCharm&#xff0c;在 Settings - Plugins 里面&#xff0c;搜索 Gitee 插件&#xff0c;安装后重启 PyCharm。 pychar…...

中间件是一种在客户端和服务器之间进行通信和处理的软件组件或服务

中间件是一种在客户端和服务器之间进行通信和处理的软件组件或服务。中间件位于应用程序和操作系统之间&#xff0c;可以提供一些功能&#xff0c;如请求转发、数据转换、安全性和身份验证、日志记录等。 中间件的主要作用是将应用程序与底层基础设施解耦&#xff0c;提供了一…...

RCE-eval长度限制突破技巧

目录 一、长度17的限制绕过 1、最简单的绕过 &#xff08;一&#xff09;绕过 &#xff08;二&#xff09;编写一句话木马 2、文件包含的利用 &#xff08;一&#xff09;远程文件包含的利用 &#xff08;二&#xff09;本地文件包含的利用 3、usort绕过 &#xff08…...

【黑马】MyBatis

目录 MyBatis简介JDBC缺点&#xff1a;MyBatis针对于JDBC进行简化&#xff0c;简化思路&#xff1a; MyBatis快速入门具体构建步骤解决SQL映射文件的警告提示 Mapper代理开发案例&#xff1a;使用Mapper代理方式完成案例具体步骤详解&#xff1a;Mapper代理方式 Mapper核心配置…...

oracle创建dblink使得数据库A能够访问数据库B表LMEAS_MFG_FM的数据

1、给数据库A普通用户CMRONLINE相应的权限&#xff0c;在sys用户下执行以下语句 GRANT CREATE DATABASE LINK TO CMRONLINE; GRANT DROP PUBLIC DATABASE LINK TO CMRONLINE; GRANT CREATE PUBLIC DATABASE LINK TO CMRONLINE; 2、在数据库A用户 CMRONLINE下执行创建语句&…...

git config 如何配置用户账户

Git配置用户账户主要涉及设置用户名和邮箱地址&#xff0c;这是Git进行版本控制时用于标识提交者身份的重要信息。以下是如何配置Git用户账户的详细步骤&#xff1a; 1. 打开命令行工具 首先&#xff0c;需要打开命令行工具&#xff08;如CMD、Terminal或Git Bash等&#xff…...

SpringBoot基础(二):配置文件详解

SpringBoot基础系列文章 SpringBoot基础(一)&#xff1a;快速入门 SpringBoot基础(二)&#xff1a;配置文件详解 目录 一、配置文件分类二、配置文件优先级1、不同版本优先级2、不同位置优先级 三、配置文件格式1、yml和yaml格式1.1、字符串1.2、布尔类型1.3、整数型1.4、浮点…...

Web安全(一)-靶场搭建过程-基于docker

今天来复习一下web方面的知识 1.1 sqliab环境搭建 基于Centos 和Docker 1.1.1 Vmware环境安装 这个就略去了吧 博主使用的是vmware17pro 具体的密钥什么的大家懂的都懂 这里就不提供了 接下来 将带大家安装centos7的镜像 为了方便操作 这里选择 centos7_minimal 地址如下:…...

【JavaEE】单例模式和阻塞队列

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【Java】登神长阶 史诗般的Java成神之路 &#x1f56f;️一.设计模式 ​ 在Java中&#xff0c;设计模式&#xff08;Design Patterns&#xff09;是指在软件工程和面向对象编程中&#xff0c;针对特定…...

RCE绕过技巧

目录 EVAL长度限制突破技巧 1.使用反引号 2.file_put_contents写入文件 3.php5.6变长参数usort回调后门 命令长度限制突破技巧 1.拼接文件名 无字母数字的webshell命令执行 1.取反码 2.上传临时文件 EVAL长度限制突破技巧 分析代码&#xff1a;首先传递一个param参数&…...

Spring源码解析(31)之事务配置文件解析以及核心对象创建过程

一、前言 首先我们先准备一下spring 事务的配置文件&#xff0c;具体内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/20…...

win11安装docker报错记录

报错一&#xff1a; Docker Desktop - Unexpected WSL error An unexpected error occurred while executing a WSL command. Either shut down WSL down with wsl --shutdown, and/or reboot your machine. You can also try reinstalling WSL and/or Docker Desktop. If t…...

【vulnhub】CLAMP 1.0.1靶机

信息收集 靶机发现 端口扫描 页面访问&#xff0c;并查看源码 访问 /nt4stopc/,下面有一些问题&#xff0c;提示必须收集答案 一些判断题&#xff0c;对与错对应1与0&#xff0c;最后结果为0110111001&#xff0c;拼接访问 点击图中位置&#xff0c;发现存在参数&#xff0c;p…...

GPS跟踪环路MATLAB之——数字锁相环

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 GPS跟踪环路MATLAB之——数字锁相环 前言为什么要锁相环科斯塔斯环锁相环的一些基本概念1、捕获、锁定与跟踪的概念2、捕获时间和稳态相差3、相位捕获和频率捕获4、捕获带和同…...

docker开发环境搭建-关于数据库的IP是什么

故事的背景是这样的&#xff1a; 我在本地的ubuntu系统上安装了docker&#xff0c;并创建了一个mysql容器&#xff0c;但是在使用DBeaver连接该数据库时&#xff0c;需要填写数据库的ip&#xff0c;填写127.0.0.1&#xff0c;工具提示找不到这个库&#xff0c;然后使用ip addr…...

loginApi

import request from "/utils/request"; import { AxiosPromise } from "axios"; import { CaptchaResult, LoginData, LoginResult } from "./types";/*** 登录API** param data {LoginData}* returns*/ export function loginApi(data: LoginD…...

【RAG检索增强生成】Ollama+AnythingLLM本地搭建RAG大模型私有知识库

目录 前言一、Ollama&#xff1a;革新性的本地LLM服务工具1.核心优势2.技术亮点 二、AnythingLLM 概览1.核心特性2.技术生态支持 三、搭建本地智能知识库1. Ollama的安装启航2. AnythingLLM的安装对接3. AnythingLLM的配置精调4. 工作区与文档管理5. 聊天与检索的智能交互 四、…...

【wiki知识库】08.添加用户登录功能--前端Vue部分修改

&#x1f34a; 编程有易不绕弯&#xff0c;成长之路不孤单&#xff01; 目录 &#x1f34a; 编程有易不绕弯&#xff0c;成长之路不孤单&#xff01; 一、今日目标 二、前端Vue模块的修改 2.1 the-header组件 2.2 store工具 2.3 router路由配置修改 一、今日目标 上篇文章…...

写给非机器学习人员的 embedding 入门

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…...

10.1软件工程概述-CMM-软件过程模型-逆向工程

一、软件工程基础知识 &#xfeff;00:00 1. 软件工程概述 &#xfeff;03:10 考试重要性&#xff1a;本章节每年考察12-15分&#xff0c;涉及选择题、案例和论文三种题型&#xff0c;重要性仅次于系统架构设计。内容特点&#xff1a;新版教材对概念定义改动较大&#xff0c;但…...

YOLOv8与Lingbot-Depth-Pretrain-ViTL-14协同的机器人视觉系统

YOLOv8与Lingbot-Depth-Pretrain-ViTL-14协同的机器人视觉系统 想象一下&#xff0c;一个机器人在仓库里自如穿梭&#xff0c;不仅能一眼认出货架上的螺丝刀和扳手&#xff0c;还能精准判断出哪个离自己最近、哪个最容易抓取。这背后需要的&#xff0c;不仅仅是“看见”物体&a…...

CogVideoX-2b场景应用:快速制作短视频脚本、动态贺卡与动画分镜

CogVideoX-2b场景应用&#xff1a;快速制作短视频脚本、动态贺卡与动画分镜 1. 为什么选择CogVideoX-2b进行创意内容制作 在数字内容创作领域&#xff0c;视频制作一直是门槛较高的专业技能。传统视频制作需要专业的拍摄设备、后期软件和大量时间投入。CogVideoX-2b的出现彻底…...

用STM32F103C8T6+ESP8266做个公交车报站器,附完整电路图和代码(避坑OLED与GPS)

用STM32F103C8T6ESP8266打造高可靠性公交车报站器&#xff1a;从硬件选型到代码调试全指南 在智能交通系统快速发展的今天&#xff0c;公交车报站器作为乘客信息服务的重要载体&#xff0c;其稳定性和准确性直接影响出行体验。本文将带你从零开始&#xff0c;基于STM32F103C8T6…...

Qwen3-ASR-1.7B一文详解:GPU算力适配策略与batch size调优经验

Qwen3-ASR-1.7B一文详解&#xff1a;GPU算力适配策略与batch size调优经验 1. 引言&#xff1a;从“能用”到“好用”的语音识别进阶 当你第一次部署Qwen3-ASR-1.7B时&#xff0c;可能会发现一个有趣的现象&#xff1a;上传一段音频&#xff0c;点击识别&#xff0c;几秒钟后…...

AI Agent创业商业模式:订阅制、按需付费、定制化服务的选择

AI Agent创业商业模式&#xff1a;订阅制、按需付费、定制化服务的选择1. 标题 (Title) 从工具价值到商业闭环&#xff1a;AI Agent创业的三大核心盈利模式深度拆解与选择指南AI Agent创业避坑指南&#xff1a;订阅制、按需付费、定制化服务的优劣势、适配场景与ROI计算全解析不…...

UNIT-00:Berserk Interface 在AI Agent开发中的应用:从规划、工具调用到记忆

UNIT-00&#xff1a;Berserk Interface 在AI Agent开发中的应用&#xff1a;从规划、工具调用到记忆 最近和几个做AI应用的朋友聊天&#xff0c;大家都有个共同的感受&#xff1a;现在的大模型能力确实强&#xff0c;但很多时候还是像个“一问一答”的聊天机器人。你想让它帮你…...

基于卷积神经网络的忍者像素绘卷风格迁移实战教程

基于卷积神经网络的忍者像素绘卷风格迁移实战教程 1. 引言&#xff1a;当像素艺术遇上AI风格迁移 想象一下&#xff0c;你正在开发一款复古风格的忍者游戏&#xff0c;需要大量像素风格的场景和角色。传统手工绘制不仅耗时耗力&#xff0c;而且难以保持风格一致性。现在&…...

大模型应用开发零基础教程:30分钟上手

大模型应用开发零基础教程&#xff1a;30分钟上手 标签&#xff1a;#人工智能、#大模型、#自然语言处理、#大模型开发、#智能体开发、#agent开发、#AI 系统封装学习规划&#xff08;从玩具到产品&#xff09; 用streamlit run xxx.py --server.port 8501本地测试免费部署&#…...

颠覆式闲鱼智能客服系统:家居卖家7×24小时值守零门槛解决方案

颠覆式闲鱼智能客服系统&#xff1a;家居卖家724小时值守零门槛解决方案 【免费下载链接】XianyuAutoAgent 智能闲鱼客服机器人系统&#xff1a;专为闲鱼平台打造的AI值守解决方案&#xff0c;实现闲鱼平台724小时自动化值守&#xff0c;支持多专家协同决策、智能议价和上下文感…...