RedisTemplate操作String的API

news2024/9/25 9:30:37

文章目录

  • 1 String 介绍
  • 2 命令
  • 3 对应 RedisTemplate API
    • ❄️❄️ 3.1 添加缓存
    • ❄️❄️ 3.2 设置过期时间(单独设置)
    • ❄️❄️ 3.3 获取缓存值
    • ❄️❄️ 3.4 删除key
    • ❄️❄️ 3.5 顺序递增
    • ❄️❄️ 3.6 顺序递减
  • ⛄4 以下是一些常用的API
  • ⛄5 应用场景


在这里插入图片描述

在这里插入图片描述


1 String 介绍

String 类型,也就是字符串类型,是Redis中最简单的存储类型。

其value是字符串,不过根据字符串的格式不同,又可以分为3类:
string:普通字符串
int:整数类型,可以做自增.自减操作
float:浮点类型,可以做自增.自减操作

不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过 512 MB

KEYVALUE
namesnow
age20
salary600000.0

2 命令

🍎🍎String的常见命令有🍎🍎:
SET:添加或者修改已经存在的一个 String 类型的键值对
GET:根据 key 获取 String 类型的 value
MSET:批量添加多个String类型的键值对
MGET:根据多个 key 获取多个 String 类型的 value
INCR:让一个整型的key自增1
INCRBY:让一个整型的 key 自增并指定步长,例如:incrby num 2 让num值自增2
INCRBYFLOAT:让一个浮点类型的数字自增并指定步长
SETNX:添加一个 String 类型的键值对,前提是这个 key 不存在,否则不执行
SETEX:添加一个 String 类型的键值对,并且指定有效期


3 对应 RedisTemplate API

❄️❄️ 3.1 添加缓存

//1、通过redisTemplate设置值
redisTemplate.boundValueOps("StringKey").set("StringValue");
redisTemplate.boundValueOps("StringKey").set("StringValue",1, TimeUnit.MINUTES);

//2、通过BoundValueOperations设置值
BoundValueOperations stringKey = redisTemplate.boundValueOps("StringKey");
stringKey.set("StringVaule");
stringKey.set("StringValue",1, TimeUnit.MINUTES);

//3、通过ValueOperations设置值
ValueOperations ops = redisTemplate.opsForValue();
ops.set("StringKey", "StringVaule");
ops.set("StringValue","StringVaule",1, TimeUnit.MINUTES);

//4(SETNX + SETEX):这个key不存在执行 存在则不执行,多用于互斥锁
ops.setIfAbsent("key", "value", 10, TimeUnit.SECONDS)

❄️❄️ 3.2 设置过期时间(单独设置)

redisTemplate.boundValueOps("StringKey").expire(1,TimeUnit.MINUTES);
redisTemplate.expire("StringKey",1,TimeUnit.MINUTES);

不建议使用单独设置过期时间的API, 可以使用 3.1 中的第一个演示,在设置值的同时设置过期时间.

❄️❄️ 3.3 获取缓存值

//1、通过redisTemplate设置值
String str1 = (String) redisTemplate.boundValueOps("StringKey").get();

//2、通过BoundValueOperations获取值
BoundValueOperations stringKey = redisTemplate.boundValueOps("StringKey");
String str2 = (String) stringKey.get();

//3、通过ValueOperations获取值
ValueOperations ops = redisTemplate.opsForValue();
String str3 = (String) ops.get("StringKey");

❄️❄️ 3.4 删除key

Boolean result = redisTemplate.delete("StringKey");

❄️❄️ 3.5 顺序递增

redisTemplate.boundValueOps("StringKey").increment(1L);

该API会返回递增后的值. 如果KEY对应的值不存在会创建之并返回1

❄️❄️ 3.6 顺序递减

redisTemplate.boundValueOps("StringKey").increment(-3L);

⛄4 以下是一些常用的API

ValueOperations ops = redisTemplate.opsForValue();

//	单独设置有效期(不推荐单独用)
ops.expire("StringKey",1,TimeUnit.MINUTES);

//	设置值 and 有效期(推荐这种)
ops.set("key", "value", 1, TimeUnit.MINUTES);

//	操作数值 增加 减少(INCR INCRBY)
ops.increment("key", 1);
ops.increment("key", -1);

//	(SETNX + SETEX):这个key不存在执行 存在则不执行,多用于互斥锁
ops.setIfAbsent("key", "value", 10, TimeUnit.SECONDS)

//	获取缓存值
ops.get("StringKey");

⛄5 应用场景

下面列举了一些Redis String类型的应用场景:

  • 缓存:使用String保存缓存信息,如用户会话状态、web页面片段、数据库查询结果等。

  • 计数器:使用incr/decr命令实现对计数器的自增和自减,如网站访问量、文件下载次数、商品销售量等。

  • 消息队列:使用LPUSH/RPUSH命令实现队列的入队(左插入)和出队(右取出),同时使用BLPOP/BRPOP命令进行阻塞式弹出等待的消息。

  • id生成器:使用incr命令实现简单id生成,解决分布式系统节点间数据生成的问题。

  • 分布式锁:通过 SETNX 命令结合时间戳或随机字符串等实现互斥锁的获取和释放,避免并发写操作时数据的不一致。

  • 商品价格:使用String保存商品价格,动态更新价格避免价格无法及时调整。

  • Session共享:将session信息以key-value方式保存到redis中并设置过期时间,完成session共享功能,类似于分布式缓存。


在这里插入图片描述

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

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

相关文章

9.10-AutoAWQ代码解析

1、首先要去官网下载源码。https://github.com/casper-hansen/AutoAWQ.githttps://github.com/casper-hansen/AutoAWQ.git 2、git clone后,下载AutoAWQ所需环境。 pip install -e . 3、查看quantize.py代码,修改model_path部分,修改为想要量…

系统架构师考试学习笔记第四篇——架构设计实践知识(19)嵌入式系统架构设计理论与实践

本章考点: 第19课时主要学习嵌入式系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分)。在历年考试中,案例题对该部分内容都有固定考查,综合知识选择题目中有固定分值…

您与该网站的连接不是私密连接,存在安全隐患

您与该网站的连接不是私密连接,存在安全隐患。 攻击者可能会试图窃取您的信息(例如:密码、通讯内容或信用卡信息)。为避免您的信息失窃,建议您停止访问该页面。了解详情 解决办法如下: 1、查看电脑时间&…

使用FastJson2将对象转成JSON字符串时,小数位“0”开头时转换出错

maven坐标&#xff1a; <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.40</version> </dependency> 问题现象&#xff1a; 问题原因&#xff1a; I…

IP路由选择

文章目录 1. 基本概念2. RIP(路由选择信息协议)3. OSPF 1. 基本概念 路由选择协议 路由选择协议让路由器能够动态地发现互联网络&#xff0c;并确保所有路由器的路由选择表都相同。路由选择协议还用于找出最佳路径&#xff0c;让分组穿越互联网络前往目的地的效率最高。RIP、R…

领夹麦克风哪个品牌好?无线领夹麦克风品牌大全,麦克风推荐

在这个全民直播、Vlog盛行的时代&#xff0c;一款轻便高效的无线领夹麦克风成了不少内容创作者的必备神器。但市面上产品五花八门&#xff0c;有的打着“超远传输、无损音质”的旗号&#xff0c;实则性能平平&#xff0c;甚至存在信号干扰、噪音大等问题&#xff0c;让人直呼交…

SpringBoot集成MyBatis-PlusDruid

目录 MyBatis-Plus简介 实例演示 创建Springboot项目 初始化Springboot项目 添加关键依赖 application.properties添加相关配置 启动类 编写实体类 编写mapper接口 条件构造器 分页插件 自定义 SQL 映射 MyBatis-Plus简介 MyBatis-Plus简介‌MyBatis-Plus‌&…

铁威马秋季新品即将上线,你想要的NAS我都有!

各位铁粉们&#xff0c;注意啦&#xff01; 一场关于存储的饕餮盛宴即将拉开帷幕 铁威马&#xff0c;带着九款全新力作NAS 将于9月19日席卷全球市场 是的&#xff0c;你没听错 九款&#xff01; 从入门级到专业级 从桌面型到机架式 全系搭载TOS 6 总有一款能击中你的心…

PCI 9054应用总结

1 PCI配置空间 1.1 BAR大小的确定 Linux kernel读取PCI BARn表示的内存长度时&#xff0c;先直接读取BARn的值&#xff0c;这个就是地址&#xff0c;然后再向BARn写入0xffff,ffff&#xff0c;再读取BARn的值就是需要的内存长度&#xff08;忽略bit3到bit0的处理&#xff09;&a…

微波无源器件 3 一种用于Ka频带双极化波束形成网络的双模三路功分器

摘要&#xff1a; 本文给出了一种用于Ka频带的双极化工作的双模3路功分器的设计和性能。对有着三个输出端口的平衡地很好的功分的TE10和TE01模式和27.5-30GHz上优于-23dB的输入匹配可以获得相似的性能。与双模定向耦合器相连结&#xff0c;此三路功分器对于双极化波束形成网络具…

【Go】Go语言介绍与开发环境搭建

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Qt篇——Qt获取Windows电脑上所有外接设备的名称、物理端口位置等信息

我之前有发过一篇文章《Qt篇——获取Windows系统上插入的串口设备的物理序号》&#xff0c;文章中主要获取的是插入的USB串口设备的物理序号&#xff1b;而本篇文章则进行拓展&#xff0c;可以获取所有外接设备的相关信息&#xff08;比如USB摄像头、USB蓝牙、USB网卡、其它一些…

膨胀腐蚀操作opencv dilate膨胀白膨胀,erode腐蚀是黑吃白。主要针对二值图

效果&#xff1a; 代码&#xff1a; import cv2 import numpy as np from matplotlib import pyplot as pltif __name__ "__main__":h 10w 10data np.random.normal(0, 1, [h, w]) # sigma, 2*sigma, 3*sigma之间的数的比例分别为0.68&#xff0c; 0.96&#…

甲骨文新财报云基建营收同比增长45%,与亚马逊AWS合作,盘后涨超9%

KlipC报道&#xff1a;当地时间9月9日&#xff0c;数据库软件与云服务龙头甲骨文发布截止8月份的2025财年第一财季财报&#xff0c;财报显示&#xff0c;营业收入133亿美元&#xff0c;同比增长7%&#xff1b;净利润 29.29 亿美元&#xff0c;同比增长21.03%。盘后大涨超9%。 …

C++ 第一阶段(基础语法)

c初识 创建项目 编写“HelloWorld”代码 #include <iostream> using namespace std; int main() {cout << "Hello World!\n"; }注释 单行注释 //表述信息 多行注释 /*表述信息*/ 变量 作用:给一段指定的内存空间起名&#xff0c;方便操作这段内存 语…

Tensorflow2如何读取自制数据集并训练模型?-- Tensorflow自学笔记13

一. 如何自制数据集&#xff1f; 1. 目录结构 以下是自制数据集-手写数字集, 保存在目录 mnist_image_label 下 2. 数据存储格式 2.1. 目录mnist_train_jpeg_60000 下存放的是 60000张用于测试的手写数字 如 : 0_5.jpg, 表示编号为0&#xff0c;标签为5的图片 6_1.jpg, 表示…

DGV结构变异数据库下载及bedToBigBed+bigBedToBed转换

DGV结构变异数据库通常用来过滤检测的CNV、Indels等结构变异信息&#xff0c;以达到去除假阳性的目的。 下载的bedToBigBed和bigBedToBed为二进制程序&#xff0c;已编译好&#xff0c;可以直接使用。 1. 基础软件和文件下载 # bedToBigBed下载 wget http://hgdownload.soe.…

PMP--一、二、三模--分类--14.敏捷--技巧--DoDDoR

文章目录 技巧DoD&DoR 二模14.敏捷--术语表--完成的定义DoD--Definition of Done--是指一个项目什么时候可以被认为是“完成”的标准&#xff0c;它可以包括各种质量和功能的具体要求。--它是团队需要满足的所有标准的核对单&#xff0c;只有可交付成果满足该核对单才能视为…

OPENAIGC开发者大赛企业组特等奖 | 集思科技-大品牌的AI直播团队产品提供商

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…

基于java+SpringBoot+Vue的教师工作量管理系统设计与实现

基于javaSpringBootVue的教师工作量管理系统设计与实现 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台展示 前台展示模块主要面向教师用户&#xff0c;提供个人中心、课程信息管理、工作量管理等功能。教师可以查看自己…