Redis入门到通关之String命令

简介: Redis入门到通关之String命令

⛄1 String 介绍


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


其value是字符串,不过根据字符串的格式不同,又可以分为3类:

● string:普通字符串

● int:整数类型,可以做自增.自减操作

● float:浮点类型,可以做自增.自减操作


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


⛄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共享功能,类似于分布式缓存。


相关文章
|
存储 缓存 NoSQL
Redis 服务器全方位介绍:从入门到核心原理
Redis是一款高性能内存键值数据库,支持字符串、哈希、列表等多种数据结构,广泛用于缓存、会话存储、排行榜及消息队列。其单线程事件循环架构保障高并发与低延迟,结合RDB和AOF持久化机制兼顾性能与数据安全。通过主从复制、哨兵及集群模式实现高可用与横向扩展,适用于现代应用的多样化场景。合理配置与优化可显著提升系统性能与稳定性。
524 0
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
652 1
springboot的缓存和redis缓存,入门级别教程
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
179 4
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
609 8
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
158 3
|
C语言 C++ 容器
C++入门7——string类的使用-1
C++入门7——string类的使用-1
123 0
|
C++ 容器
C++入门7——string类的使用-2
C++入门7——string类的使用-2
116 0
|
7月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
2月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。