每次springboot整合redis的时候总时要到处找资料,所以整理一下springboot整合redis的相关重要的配置进行记录
省的下次还要到处找百度
由于对redis的学习并不是很深入,所以只是配置单击版的redis
以后有时间整理redis集群和持久化相关的操作
# 服务器端口
server:
port: 8888
# Spring Boot 的数据源配置
spring:
redis:
database: 0
host: localhost # Redis服务器地址
port: 6379 # Redis服务器连接端口
password: # Redis服务器连接密码(默认为空)
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
min-idle: 0 # 连接池中的最小空闲连接
timeout: 1000 # 连接超时时间(毫秒)
datasource:
url: jdbc:mysql://localhost:3306/use_redis?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
maxOpenPreparedStatements: 20
mybatis-plus:
# xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
mapper-locations: classpath:mapper/*.xml
global-config:
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 1
configuration:
# 是否将sql打印到控制面板(该配置会将sql语句和查询的结果都打印到控制台)
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# PageHelper分页插件
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
需要配置的也就是
spring:
redis:
database: 0
host: localhost # Redis服务器地址
port: 6379 # Redis服务器连接端口
password: # Redis服务器连接密码(默认为空)
org.springframework.boot
spring-boot-starter-data-redis
//用来获取springboot创建好的工厂
@Component // 此类必须交给springboot管理
public class ApplicationContextUtils implements ApplicationContextAware {
// 保留下来工厂
private static ApplicationContext applicationContext;
// 将创建好工厂以参数形式传递给这个类
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ApplicationContextUtils.applicationContext = applicationContext;
}
// 根据类在工厂的唯一id从spring容器中获取javabean
public static Object getBeanById(String beanName) {
return applicationContext.getBean(beanName);
}
// 根据class的名字从spring容器中获取javabean
public static <T> T getBeanByName(Class<T> targetClass) {
return applicationContext.getBean(targetClass);
}
}
说明:
根据value和hashvleus的序列化方式不同
我遇到收集了两种配置类
还有JdkSerializationRedisSerializer是jdk序列化方式,实体类要实现序列化接口
序列化方式使用的是StringRedisSerializer
redis的配置类
有两种配置类
@Configuration //当前类为配置类
public class RedisConfig {
@Bean //redisTemplate注入到Spring容器
public RedisTemplate<String,String> redisTemplate(RedisConnectionFactory factory){
RedisTemplate<String,String> redisTemplate=new RedisTemplate<>();
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
redisTemplate.setConnectionFactory(factory);
//key序列化
redisTemplate.setKeySerializer(redisSerializer);
//value序列化
redisTemplate.setValueSerializer(redisSerializer);
//value hashmap序列化
redisTemplate.setHashKeySerializer(redisSerializer);
//key hashmap序列化
redisTemplate.setHashValueSerializer(redisSerializer);
return redisTemplate;
}
}
@Slf4j
@Configuration
public class RedisConfig {
@Bean
@SuppressWarnings("all")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
@Slf4j
public class RedisCache implements Cache {
private String id;
public RedisCache(String id) {
log.info("当前的缓存id: [{}]",id);
this.id = id;
}
@Override
public String getId() {
return this.id;
}
@Override//放入redis缓存
public void putObject(Object key, Object value) {
log.info("放入缓存key:[{}] 放入缓存的value:[{}]",key,value);
getRedisTemplate().opsForHash().put(id,key.toString(),value);
}
@Override//从redis缓存获取
public Object getObject(Object key) {
log.info("获取缓存的key:[{}]",key.toString());
return getRedisTemplate().opsForHash().get(id,key.toString());
}
@Override//删除指定缓存信息
public Object removeObject(Object o) {
return null;
}
@Override//清除缓存
public void clear() {
log.info("清除所有缓存信息...");
getRedisTemplate().delete(id);
}
@Override
public int getSize() {
return getRedisTemplate().opsForHash().size(id).intValue();
}
//封装获取redistemplate的方法
public RedisTemplate getRedisTemplate(){
RedisTemplate redisTemplate = (RedisTemplate) ApplicationContextUtils.getBean("redisTemplate");
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}
@Component
public class RedisUtil {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 判断 key 是否存在
*
* @param key 键
* @return 如果存在 key 则返回 true,否则返回 false
*/
public Boolean exists(String key) {
return redisTemplate.hasKey(key);
}
/**
* 获取 Key 的类型
*
* @param key 键
*/
public String type(String key) {
DataType dataType = redisTemplate.type(key);
assert dataType != null;
return dataType.code();
}
/**
* 指定缓存失效时间
*
* @param key 键
* @param time 时间(秒)
* @return 30
*/
public boolean expire(String key, long time) {
try {
if (time > 0) {
redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 根据key 获取过期时间
*
* @param key 键 不能为null
* @return 时间(秒) 返回0代表为永久有效
*/
public long getExpire(String key) {
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
}
/**
* 判断key是否存在
*
* @param key 键
* @return true 存在 false不存在
*/
public boolean hasKey(String key) {
try {
return redisTemplate.hasKey(key);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 删除 key
*
* @param key 键
*/
public Long delete(String... key) {
if (key == null || key.length < 1) {
return 0L;
}
return redisTemplate.delete(Arrays.asList(key));
}
/**
* 获取所有的keys
*
* @return
*/
public Set<String> keys() {
Set<String> keys1 = redisTemplate.keys("*");
return keys1;
}
/**
* 获取所有的keys得所有的值
*
* @param keys
* @return
*/
public HashMap<Object, Object> getKeysValue(String keys) {
Set<String> keys1 = redisTemplate.keys("*");
HashMap<Object, Object> hashMap = new HashMap<Object, Object>();
for (String s : keys1) {
Object o = redisTemplate.opsForValue().get(keys + s);
System.out.println("o=" + o);
hashMap.put(keys1, o);
}
return hashMap;
}
/**
* 删除缓存
*
* @param key 可以传一个值 或多个
*/
public void del(String... key) {
if (key != null && key.length > 0) {
if (key.length == 1) {
redisTemplate.delete(key[0]);
} else {
redisTemplate.delete(CollectionUtils.arrayToList(key));
}
}
}
// ============================String=============================
/**
* 普通缓存获取
*
* @param key 键
* @return 值
*/
public Object get(String key) {
return key == null ? null : redisTemplate.opsForValue().get(key);
}
/**
* 普通缓存放入
*
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public boolean set(String key, Object value) {
try {
redisTemplate.opsForValue().set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 普通缓存放入并设置时间
*
* @param key 键
* @param value 值
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
* @return true成功 false 失败
*/
public boolean set(String key, Object value, long time) {
try {
if (time > 0) {
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
} else {
set(key, value);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 递增
*
* @param key 键
* @param delta 要增加几(大于0)
* @return
*/
public long incr(String key, long delta) {
if (delta < 0) {
throw new RuntimeException("递增因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, delta);
}
/**
* 递减
*
* @param key 键
* @param delta 要减少几(小于0)
* @return
*/
public long decr(String key, long delta) {
if (delta < 0) {
throw new RuntimeException("递减因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, -delta);
}
// ================================Map=================================
/**
* HashGet
*
* @param key 键 不能为null
* @param item 项 不能为null
* @return 值
*/
public Object hget(String key, String item) {
return redisTemplate.opsForHash().get(key, item);
}
/**
* 获取hashKey对应的所有键值
*
* @param key 键
* @return 对应的多个键值
*/
public Map<Object, Object> hmget(String key) {
return redisTemplate.opsForHash().entries(key);
}
/**
* HashSet
*
* @param key 键
* @param map 对应多个键值
* @return true 成功 false 失败
*/
public boolean hmset(String key, Map<String, Object> map) {
try {
redisTemplate.opsForHash().putAll(key, map);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* HashSet 并设置时间
*
* @param key 键
* @param map 对应多个键值
* @param time 时间(秒)
* @return true成功 false失败
*/
public boolean hmset(String key, Map<String, Object> map, long time) {
try {
redisTemplate.opsForHash().putAll(key, map);
if (time > 0) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key 键
* @param item 项
* @param value 值
* @return true 成功 false失败
*/
public boolean hset(String key, String item, Object value) {
try {
redisTemplate.opsForHash().put(key, item, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key 键
* @param item 项
* @param value 值
* @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
* @return true 成功 false失败
*/
public boolean hset(String key, String item, Object value, long time) {
try {
redisTemplate.opsForHash().put(key, item, value);
if (time > 0) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 删除hash表中的值
*
* @param key 键 不能为null
* @param item 项 可以使多个 不能为null
*/
public void hdel(String key, Object... item) {
redisTemplate.opsForHash().delete(key, item);
}
/**
* 判断hash表中是否有该项的值
*
* @param key 键 不能为null
* @param item 项 不能为null
* @return true 存在 false不存在
*/
public boolean hHasKey(String key, String item) {
return redisTemplate.opsForHash().hasKey(key, item);
}
/**
* hash递增 如果不存在,就会创建一个 并把新增后的值返回
*
* @param key 键
* @param item 项
* @param by 要增加几(大于0)
* @return 274
*/
public double hincr(String key, String item, double by) {
return redisTemplate.opsForHash().increment(key, item, by);
}
/**
* hash递减
*
* @param key 键
* @param item 项
* @param by 要减少记(小于0)
* @return 285
*/
public double hdecr(String key, String item, double by) {
return redisTemplate.opsForHash().increment(key, item, -by);
}
// ============================set=============================
/**
* 根据key获取Set中的所有值
*
* @param key 键
* @return 295
*/
public Set<Object> sGet(String key) {
try {
return redisTemplate.opsForSet().members(key);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 根据value从一个set中查询,是否存在
*
* @param key 键
* @param value 值
* @return true 存在 false不存在
*/
public boolean sHasKey(String key, Object value) {
try {
return redisTemplate.opsForSet().isMember(key, value);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将数据放入set缓存
*
* @param key 键
* @param values 值 可以是多个
* @return 成功个数
*/
public long sSet(String key, Object... values) {
try {
return redisTemplate.opsForSet().add(key, values);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 将set数据放入缓存
*
* @param key 键
* @param time 时间(秒)
* @param values 值 可以是多个
* @return 成功个数
*/
public long sSetAndTime(String key, long time, Object... values) {
try {
Long count = redisTemplate.opsForSet().add(key, values);
if (time > 0)
expire(key, time);
return count;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 获取set缓存的长度
*
* @param key 键
* @return
*/
public long sGetSetSize(String key) {
try {
return redisTemplate.opsForSet().size(key);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 移除值为value的
*
* @param key 键
* @param values 值 可以是多个
* @return 移除的个数
*/
public long setRemove(String key, Object... values) {
try {
Long count = redisTemplate.opsForSet().remove(key, values);
return count;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
// ===============================list=================================
/**
* 获取list缓存的内容
*
* @param key 键
* @param start 开始
* @param end 结束 0 到 -1代表所有值
* @return
*/
public List<Object> lGet(String key, long start, long end) {
try {
return redisTemplate.opsForList().range(key, start, end);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 获取list缓存的内容
*
* @param key 键
* @param start 开始
* @param end 结束 0 到 -1代表所有值
* @return
*/
public List<Object> getList(String key, long start, long end) {
try {
return redisTemplate.opsForList().range(key, start, end);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 获取list缓存的长度
*
* @param key 键
* @return
*/
public long lGetListSize(String key) {
try {
return redisTemplate.opsForList().size(key);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 通过索引 获取list中的值
*
* @param key 键
* @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
* @return
*/
public Object lGetIndex(String key, long index) {
try {
return redisTemplate.opsForList().index(key, index);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @return
*/
public boolean lSet(String key, Object value) {
try {
redisTemplate.opsForList().rightPush(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public boolean lSet(String key, Object value, long time) {
try {
redisTemplate.opsForList().rightPush(key, value);
if (time > 0)
expire(key, time);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @return
*/
public boolean lSet(String key, List<Object> value) {
try {
redisTemplate.opsForList().rightPushAll(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public boolean lSet(String key, List<Object> value, long time) {
try {
redisTemplate.opsForList().rightPushAll(key, value);
if (time > 0)
expire(key, time);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 根据索引修改list中的某条数据
*
* @param key 键
* @param index 索引
* @param value 值
* @return
*/
public boolean lUpdateIndex(String key, long index, Object value) {
try {
redisTemplate.opsForList().set(key, index, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 移除N个值为value
*
* @param key 键
* @param count 移除多少个
* @param value 值
* @return 移除的个数
*/
public long lRemove(String key, long count, Object value) {
try {
Long remove = redisTemplate.opsForList().remove(key, count, value);
return remove;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
}
第一步:准备安装环境,安装c相关的依赖
yum install gcc-c++
第二步:下载解压安装包
# 我这里装的是4.0版本
# 下载地址https://redis.io
第三步:解压文件夹,到/usr/local
tar -zxvf redis-4.0.10.tar.gz
mv redis-4.0.10/ /usr/local/
第四步:安装编译redis
# 到redis安装目录
cd /usr/local/redis-4.0.10
make MALLOC=libc
make install
第五步:配置redis.config,可以远程访问redis
# 修改redis.config文件,修改bin为bind 0.0.0.0
cd /usr/local/redis-4.0.10
vim redis.conf
# 将 bind 配置成0.0.0.0,允许任意服务器来访问 redis
第六步:启动redis
cd /usr/local/redis-4.0.10
redis-server ./redis.conf
第七步:远程访问redis
#两种方式
#第一种
# 我用window的redis-cli进行访问
redis-cli -h host -p port -a password --raw
# -a password 是指明密码,如果不设置密码可以省略
# --raw是防止中文乱码的配置,最好带上
#第二种
# 使用redis图形化界面工具Redis Desktop进行连接
# 关闭防火墙
systemctl stop firewalld
第八步:简单命令进行测试
# 登录redis客户端
#(1)用ping命令看是否回应pong
127.0.0.1:6379> ping
PONG
#(2)set a aaa
get a
aaa
#(3)set b 测试中文乱码
get b
测试中文乱码
#(4)操作数据库
- 清空当前的库 FLUSHDB
- 清空全部的库 FLUSHALL
##到此redis安装成功,可以进行下一步学习以及集群的配置
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import com.shaoming.entity.User;
import com.shaoming.util.ApplicationContextUtils;
import com.shaoming.util.JacksonUtil;
import com.shaoming.util.RedisUtil;
import cn.hutool.core.collection.CollectionUtil;
import redis.clients.jedis.Jedis;
@SpringBootTest // springboot的单元测试类的注解
public class TestRedis {
@Autowired
private Jedis jedis;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private RedisUtil redisUtil;
/**
* jedis的测试
*/
// 把数据存入redis
@Test
public void testSaveDataByRedis() {
jedis.set("a", "aaa");
}
//从redis中取出数据
@Test
public void testGetDataByRedis() {
String string = jedis.get("a");
System.out.println(string);
}
// 把json数据存入redis
@Test
public void testSaveJsonDataToRedis() {
User user = new User();
user.setAge(18);
user.setName("测试的name的值");
ArrayList<User> userList = CollectionUtil.newArrayList(user, user, user);
String userListJson = JacksonUtil.obj2String(userList);
jedis.set("userList", userListJson);
}
// 从redis数据库获取json数据
@Test
public void testGetJsonDataFromRedis() {
String json = jedis.get("userList");
System.out.println(json);
List<User> userList = JacksonUtil.string2Obj(json, ArrayList.class, User.class);
System.out.println(userList);
}
@Test
public void testReisPing() {
String ping = jedis.ping();
System.out.println(ping);
}
/**
* 操作StringRedisTemplate
*/
// 操作string
@Test
public void testStringRedisTemplateSetString() {
User user = new User();
user.setAge(18);
user.setName("测试的name的值");
ArrayList<User> userList = CollectionUtil.newArrayList(user, user, user);
String userListJson = JacksonUtil.obj2String(userList);
stringRedisTemplate.opsForValue().set("userList", userListJson);
}
@Test
public void testStringRedisTemplateGetString() {
String json = stringRedisTemplate.opsForValue().get("userList");
System.out.println(json);
List<User> userList = JacksonUtil.string2Obj(json, ArrayList.class, User.class);
System.out.println(userList);
}
// 操作hash
@Test
public void testStringRedisTemplateSetHash() {
User user = new User();
user.setAge(18);
user.setName("测试的name的值");
ArrayList<User> userList = CollectionUtil.newArrayList(user, user, user);
String userListJson = JacksonUtil.obj2String(userList);
stringRedisTemplate.opsForHash().put("userListKey", "userList", userListJson);
}
@Test
public void testStringRedisTemplateGetHash() {
String json = (String) stringRedisTemplate.opsForHash().get("userListKey", "userList");
System.out.println(json);
List<User> userList = JacksonUtil.string2Obj(json, ArrayList.class, User.class);
System.out.println(userList);
}
/**
* 操作RedisTemplate
*/
// 使用的是Jackson2JsonredisSerializer
@Test
public void testRedisTemplateStringSet() {
User user = new User();
user.setAge(18);
user.setName("测试的name的值");
ArrayList<User> userList = CollectionUtil.newArrayList(user, user, user);
// String userListJson = JacksonUtil.obj2String(userList);
/**
* RedisTemplate的k-v都是存放的对象
*/
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.opsForValue().set("userList", userList);
}
@Test
public void testRedisTemplateStringGet() {
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
Object userList = redisTemplate.opsForValue().get("userList");
System.out.println(userList);
}
// 使用JdkSerializationRedisSerializer
@Test
public void testRedisTemplateStringSetByJdkSerializationRedisSerializer() {
User user = new User();
user.setAge(18);
user.setName("测试的name的值");
ArrayList<User> userList = CollectionUtil.newArrayList(user, user, user);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setValueSerializer(jdkSerializationRedisSerializer);
redisTemplate.opsForValue().set("userList", userList);
}
@Test
public void testRedisTemplateStringGetByJdkSerializationRedisSerializer() {
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setValueSerializer(jdkSerializationRedisSerializer);
Object userList = redisTemplate.opsForValue().get("userList");
System.out.println(userList);
}
/**
* 测试redis的工具类RedisUtil
*/
@Test
public void testRedisUtilSet() {
User user = new User();
user.setAge(18);
user.setName("测试的name的值");
ArrayList<User> userList = CollectionUtil.newArrayList(user, user, user);
redisUtil.set("userList", userList,10);
}
}