摘要:配置文件数据库索引默认为服务器地址服务器连接端口服务器连接密码默认为空连接池最大连接数使用负值表示没有限制连接池最大阻塞等待时间使用负值表示没有限制连接池中的最大空闲连接连接池中的最小空闲连接连接超时时间毫秒自定义采用的序列化方式
配置文件
spring: redis: # Redis数据库索引(默认为0) database: 0 # Redis服务器地址 host: 192.168.133.128 # Redis服务器连接端口 port: 6379 # Redis服务器连接密码(默认为空) password: redis jedis: pool: #连接池最大连接数(使用负值表示没有限制) max-active: 8 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1 # 连接池中的最大空闲连接 max-idle: 8 # 连接池中的最小空闲连接 min-idle: 0 # 连接超时时间(毫秒) timeout: 10000自定义RedisTemplate
@Configuration public class RedisConfig { @Bean public RedisTemplateredis工具类redisTemplate(RedisConnectionFactory factory) { RedisTemplate template = new RedisTemplate(); 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; } }
@Component public class RedisUtil2 { @Autowired private RedisTemplate测试redisTemplate; /** * 指定缓存失效时间 * * @param key 键 * @param time 时间(秒) * @return */ 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; } } /** * 删除缓存 * * @param key 可以传一个值 或多个 */ @SuppressWarnings("unchecked") 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)); } } } /** * 普通缓存获取 * * @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
@RestController public class RedisController { @Autowired private RedisUtils redisUtils; @Autowired private RedisUtil2 redisUtil2; @GetMapping("test-set-string") public String testSetString(String key, String value) { redisUtils.set(key, value,60L); return "success set string"; } @GetMapping("test-get-string") public String testGetString(String key) { return redisUtils.getString(key); } @GetMapping("test-set-string2") public String testSetString2(String key, String value) { redisUtil2.set(key, value,60L); return "success set string2"; } @GetMapping("test-get-string2") public String testGetString2(String key) { return redisUtils.getString(key); } }测试存入对象 pojo
package com.learn.jredis.pojo; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = -1L; private String username; private Integer age; public User(String username, Integer age) { this.username = username; this.age = age; } public User() { } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }存入代码
@GetMapping("test-set-obj") public String testSetObj() { User user = new User("木子", 20); redisUtil2.set(user.getUsername(), user); return "success set obj"; } @GetMapping("test-get-obj") public Object testGetObj(String key) { return redisUtil2.get(key); }结果
{ username: "木子", age: 20 }
代码:springboot-redis
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/74130.html
摘要:至此,已完成整合独立模块做缓存详情请看地址相关文章系列整合独立模块 项目github地址:https://github.com/5-Ason/aso...具体可看 ./db/db-redis 和 ./db/db-cache 两个模块 // TODO 在整合redis之前需要先本地配置好redis环境,迟点有时间补一下linux下下载安装配置redis 本文主要实现的是对数据操作进行独立...
摘要:至此,已完成整合独立模块做缓存详情请看地址相关文章系列整合独立模块 项目github地址:https://github.com/5-Ason/aso...具体可看 ./db/db-redis 和 ./db/db-cache 两个模块 // TODO 在整合redis之前需要先本地配置好redis环境,迟点有时间补一下linux下下载安装配置redis 本文主要实现的是对数据操作进行独立...
摘要:相比它支持存储的类型相对更多字符哈希集合有序集合列表,同时是线程安全的。基于的连接实例,可以在多个线程间并发访问,且线程安全,满足多线程环境下的并发访问,同时它是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。 SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML...
阅读 3890·2021-10-12 10:12
阅读 2866·2021-09-10 11:18
阅读 3653·2019-08-30 15:54
阅读 2748·2019-08-30 15:53
阅读 618·2019-08-30 13:54
阅读 950·2019-08-30 13:21
阅读 2234·2019-08-30 12:57
阅读 1671·2019-08-30 11:10