一、介绍
1、简介
由于存储在 Redis 中的 key 和 value 通常是很常见的 String 类型,Redis模块提供了 RedisConnection 和 RedisTemplate 的扩展,分是 StringRedisConnection 和 StringRedisTemplate,作为字符串操作的解决方案。
通过源码可以看见对于Key、Value、HashKey、HashValue都是进行String类型的序列化。
因此对于一些复杂类型,如对象在StringRedisTemplate的时候往往需要自己手动序列化将对象转为JSON再存入Redis。
二、集成
使用StringRedisTemplate,不需要(写RedisConfig)额外设置序列化。不过存取对象需要自己序列化、反序列化。
三、使用
1、存取string
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void testString(){
String key = "string-name";
//存
String value = "这是value123";
stringRedisTemplate.opsForValue().set(key,value);
//取
Object valueObj = stringRedisTemplate.opsForValue().get(key);
System.out.println("value为:" + valueObj);
}
输出:value为:这是value123,
查看可视化工具也没有乱码
2、存取对象
import com.alibaba.fastjson.JSON;
import org.example.Main;
import org.example.dto.UserDTO;
import org.example.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void testUser(){
String key = "user-key";
//存
UserDTO userDTO = new UserDTO();
userDTO.setUserAccount("zhangsan");
userDTO.setAge(18);
userDTO.setUserName("张三");
stringRedisTemplate.opsForValue().set(key, JSON.toJSONString(userDTO));
//取
String valueObj = stringRedisTemplate.opsForValue().get(key);
UserDTO redisUser = JSON.parseObject(valueObj, UserDTO.class);
System.out.println("value为:" + redisUser);
}
输出:value为:UserDTO(userName=张三, age=18, userAccount=zhangsan)
查看可视化工具没有乱码:
3、广播消息
4、execute执行命令