Redis入门到通关之String命令

news2025/5/31 17:57:21

文章目录

  • ⛄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

Redis String命令


⛄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/1592946.html

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

相关文章

康耐视visionpro-CogCaliperTool操作工具详细说明

CogCaliperTool]功能说明:卡尺工具,用于测量距离 ◆CogCaliperTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogCaliperTool ②.添加输入图像,右键“链接到”或以连线拖拽的方式选择相应输入源 ③.拖动屏幕上的矩形框到需要测量的位置。卡尺的搜索框角度与边缘不…

学习基于pytorch的VGG图像分类 day5

注:本系列博客在于汇总CSDN的精华帖,类似自用笔记,不做学习交流,方便以后的复习回顾,博文中的引用都注明出处,并点赞收藏原博主. 目录 VGG的数据集处理 1.数据的分类 2.对数据集的处理 VGG的分类标签设置 …

C++从入门到精通——类和对象(下篇)

1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _mont…

SpringBoot项目如何国际化操作,让你可以随意切换语言

1.前言 最近接触的项目需要中文/英文或者其他国家语言的切换,在后台的时候有一个选择,你可以选择中文还是英文,或者其他语言,选择完毕界面语言就都变了,咱不知道前端怎么操作的,但是后台在处理提示语的时候…

matplotlib画圆

参考博客: https://zhuanlan.zhihu.com/p/658373265 实现1 import matplotlib.pyplot as plt import numpy as np# 设置圆的半径和圆心坐标 radius 1.0 x_center, y_center 0, 0# 生成圆的点 theta np.linspace(0, 2*np.pi, 100) x radius * np.cos(theta) x…

JavaScript中的Blob、Buffer、ArrayBuffer和TypedArray详解

文章的更新路线:JavaScript基础知识-Vue2基础知识-Vue3基础知识-TypeScript基础知识-网络基础知识-浏览器基础知识-项目优化知识-项目实战经验-前端温习题(HTML基础知识和CSS基础知识已经更新完毕) 正文 摘要:本文详细介绍了JavaS…

基于PyTorch神经网络进行温度预测——基于jupyter实现

导入环境 import numpy as np import pandas as pd import matplotlib.pyplot as plt import torch import torch.optim as optim import warnings warnings.filterwarnings("ignore") %matplotlib inline读取文件 ### 读取数据文件 features pd.read_csv(temps.…

蓝桥杯-数组分割

问题描述 小蓝有一个长度为 N 的数组 A 「Ao,A1,…,A~-1]。现在小蓝想要从 A 对应的数组下标所构成的集合I 0,1,2,… N-1 中找出一个子集 民1,那么 民」在I中的补集为Rz。记S∑reR 4,S2∑rERA,,我们要求S、和 S,均为偶数,请问在这…

如何访问远程服务器?

在现代技术时代,随着信息化的快速发展,远程访问服务器已经成为了不可或缺的一种需求。无论是企业还是个人用户,都需要通过远程访问来管理、传输和获取数据。本文将介绍一种名为【天联】的工具,它能够通过私有通道进行远程服务器访…

iptables/ebtables学习笔记

目录 一、前言 二、Netfilter 构成 三、Netfilter 转发框架 四、Netfilter 与 iptables 五、Netfilter 与 ebtables 一、前言 Netfilter 是 Linux 内核的数据包处理框架,由 Rusty Russell 于 1998 年开发, 旨在改进以前的 ipchains(Lin…

【排序 贪心】3107. 使数组中位数等于 K 的最少操作数

算法可以发掘本质,如: 一,若干师傅和徒弟互有好感,有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二,有无限多1X2和2X1的骨牌,某个棋盘若干格子坏了,如何在没有坏…

centos编译安装nginx1.24

nginx编译1.24,先下载安装包 机器通外网的话配置nginx的yum源直接yum安装 vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org…

前端实现自动获取农历日期:探索JavaScript的跨文化编程

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

嵌入式学习52-ARM1

知识零散: 1.flash: nor flash 可被寻地址 …

Matlab与ROS(1/2)---Simulink(二)

0. 简介 在上一章中我们详细介绍了ROS与Matlab链接的基础用法。这一章我们将来学习如何使用Matlab当中的Simulink来完成。Simulink对机器人操作系统(ROS)的支持使我们能够创建与ROS网络一起工作的Simulink模型。ROS是一个通信层,允许机器人系统的不同组件以消息的形…

Linux 使用 ifconfig 报错:Failed to start LSB: Bring up/down networking

一、报错信息 在运行项目时报错数据库连接失败,我就想着检查一下虚拟机是不是 Mysql 服务忘了开,结果远程连接都连接不上虚拟机上的 Linux 了,想着查一下 IP 地址看看,一查就报错了,报错信息: Restarting…

【2024年5月备考新增】《软考真题分章练习(含答案解析) - 18 管理科学-运筹学基础 (2)》

21、某种商品价格 P 变动与某指标 A 的变化具有很强的相关性,指标 A 的增长会导致 P 的降低,反之亦然。指标 A 和价格 P 的相关性系数是()。 A.0.18 B.0 C.0.98 D.-0.83 【答案】D 【解析】A 的增长会导致 B 的降低,反比关系,系数必然是一个负数。正比函数 y=kx,当 k>…

Java中创建多线程的方法

继承Thread类,对该类进行new一个实例,对实例调用start方法,重写run方法。 缺点:单继承,无法继承 public class myThread extends Thread {public static void main(String[] args) {myThread myThread new myThread()…

阐述嵌入式系统的基本组成:硬件层、驱动层、操作系统层和应用层

大家好,今天给大家介绍阐述嵌入式系统的基本组成:硬件层、驱动层、操作系统层和应用层,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 嵌入式系统是一种能…

Redis入门到通关之Hash命令

文章目录 ⛄介绍⛄命令⛄RedisTemplate API❄️❄️添加缓存❄️❄️设置过期时间(单独设置)❄️❄️添加一个Map集合❄️❄️提取所有的小key❄️❄️提取所有的value值❄️❄️根据key提取value值❄️❄️获取所有的键值对集合❄️❄️删除❄️❄️判断Hash中是否含有该值 ⛄…