Spring模版类RedisTemplate opsForValue()方法
Spring文档
opsForValue
public ValueOperations<K,V> opsForValue()
Description copied from interface: RedisOperations
返回对简单值(或 Redis 术语中的字符串)执行的操作。
Returns the operations performed on simple values (or Strings in Redis terminology).
Specified by: opsForValue in interface RedisOperations<K,V>
Returns: value operations
String shopJson = stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY + id);
这行代码的作用是使用 Spring 提供的 StringRedisTemplate 从 Redis 中获取与指定键对应的字符串值。
详细解析:
-
stringRedisTemplate:- 这是 Spring 提供的用于操作 Redis 的模板类,专门用于处理字符串类型的数据。它继承自
RedisTemplate<String, String>,默认采用StringRedisSerializer进行键和值的序列化和反序列化。
- 这是 Spring 提供的用于操作 Redis 的模板类,专门用于处理字符串类型的数据。它继承自
-
opsForValue():- 该方法返回一个
ValueOperations<String, String>对象,提供了对 Redis 中字符串(String)类型数据的常用操作方法,如get、set、append等。
- 该方法返回一个
-
get(CACHE_SHOP_KEY + id):CACHE_SHOP_KEY是一个常量,表示 Redis 中键的前缀,例如"shop:"。通过将其与id拼接,形成完整的键名,例如"shop:123"。get方法用于获取指定键对应的值。如果 Redis 中存在该键,则返回其对应的字符串值;如果不存在,则返回null。
使用示例:
假设 CACHE_SHOP_KEY 的值为 "shop:",而 id 的值为 123,则上述代码等同于:
String shopJson = stringRedisTemplate.opsForValue().get("shop:123");
这将从 Redis 中获取键 "shop:123" 对应的值,并将其赋值给变量 shopJson。
注意事项:
-
键的设计: 使用前缀(如
CACHE_SHOP_KEY)可以有效地对 Redis 中的键进行分类,避免键名冲突,提升管理效率。 -
序列化与反序列化: 由于
StringRedisTemplate默认使用StringRedisSerializer,因此在存储和获取数据时,键和值都会被序列化和反序列化为字符串。这意味着,如果您需要存储复杂对象,需要将对象转换为 JSON 字符串后再存储,获取时再将 JSON 字符串解析为对象。 -
空值处理: 当
get方法返回null时,表示 Redis 中不存在该键。需要在代码中对这种情况进行处理,以避免出现NullPointerException或其他逻辑错误。

浙公网安备 33010602011771号