(九)SpringBoot整合redis框架
2021-06-15 18:03
阅读:564
标签:exception pack art lib config date fas pop example
二:添加Redis依赖
org.springframework.boot spring-boot-starter-redis1.4.5.RELEASE
三:添加Redis配置信息
在application.properties
中添加
spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.timeout=0 spring.redis.password=
四:创建RedisConfigurer
package com.example.demo.core.configurer; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import redis.clients.jedis.JedisPoolConfig; /** * @author * @Description: redis配置 * @date 2018/4/30 10:28 */ @Configuration @EnableCaching //开启缓存 public class RedisConfigurer extends CachingConfigurerSupport { @Bean @ConfigurationProperties(prefix="spring.redis") public JedisPoolConfig getRedisConfig(){ JedisPoolConfig config = new JedisPoolConfig(); return config; } @Bean @ConfigurationProperties(prefix="spring.redis") public JedisConnectionFactory getConnectionFactory(){ JedisConnectionFactory factory = new JedisConnectionFactory(); JedisPoolConfig config = getRedisConfig(); factory.setPoolConfig(config); return factory; } @Bean public RedisTemplate, ?> getRedisTemplate(){ RedisTemplate,?> template = new StringRedisTemplate(getConnectionFactory()); return template; } }
五:创建Redis常用方法
RedisService
package com.example.demo.service; import java.util.List; /** * @author 张瑶 * @Description: redis常用方法 * @date 2018/4/30 10:35 */ public interface RedisService { /** * 设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。 * @param key * @param value * @return */ boolean set(String key, String value); /** * 获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。 * @param key * @return */ String get(String key); /** * 设置 key 的过期时间。key 过期后将不再可用。 * @param key * @param expire * @return */ boolean expire(String key, long expire); /** * 存集合 * @param key * @param list * @param* @return */ boolean setList(String key, List list); /** * 取集合 * @param key * @param clz * @param * @return */ List getList(String key, Class clz); /** * 将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 * 当 key 存在但不是列表类型时,返回一个错误。 * @param key * @param obj * @return */ long lpush(String key, Object obj); /** * 将一个或多个值插入到列表的尾部(最右边)。 * 如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。 * @param key * @param obj * @return */ long rpush(String key, Object obj); /** * 移除并返回列表的第一个元素。 * @param key * @return */ String lpop(String key); /** * 删除已存在的键。不存在的 key 会被忽略。 * @param key * @return */ long del(final String key); }
RedisServiceImpl
package com.example.demo.service.impl; import com.alibaba.fastjson.JSON; import com.example.demo.service.RedisService; import org.springframework.dao.DataAccessException; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.concurrent.TimeUnit; /** * @author 张瑶 * @Description: redis配置 * @date 2018/4/30 10:38 */ @Service public class RedisServiceImpl implements RedisService { @Resource private RedisTemplateredisTemplate; @Override public boolean set(final String key, final String value) { boolean result = redisTemplate.execute(new RedisCallback () { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = redisTemplate.getStringSerializer(); connection.set(serializer.serialize(key), serializer.serialize(value)); return true; } }); return result; } @Override public String get(final String key){ String result = redisTemplate.execute(new RedisCallback () { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = redisTemplate.getStringSerializer(); byte[] value = connection.get(serializer.serialize(key)); return serializer.deserialize(value); } }); return result; } @Override public long del(final String key){ long result = redisTemplate.execute(new RedisCallback () { @Override public Long doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = redisTemplate.getStringSerializer(); long value = connection.del(serializer.serialize(key)); return value; } }); return result; } @Override public boolean expire(final String key, long expire) { return redisTemplate.expire(key, expire, TimeUnit.SECONDS); } @Override public boolean setList(String key, List list) { String value = JSON.toJSONString(list); return set(key,value); } @Override public List getList(String key,Class clz) { String json = get(key); if(json!=null){ List list = JSON.parseArray(json, clz); return list; } return null; } @Override public long lpush(final String key, Object obj) { final String value = JSON.toJSONString(obj); long result = redisTemplate.execute(new RedisCallback () { @Override public Long doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = redisTemplate.getStringSerializer(); long count = connection.lPush(serializer.serialize(key), serializer.serialize(value)); return count; } }); return result; } @Override public long rpush(final String key, Object obj) { final String value = JSON.toJSONString(obj); long result = redisTemplate.execute(new RedisCallback () { @Override public Long doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = redisTemplate.getStringSerializer(); long count = connection.rPush(serializer.serialize(key), serializer.serialize(value)); return count; } }); return result; } @Override public String lpop(final String key) { String result = redisTemplate.execute(new RedisCallback () { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = redisTemplate.getStringSerializer(); byte[] res = connection.lPop(serializer.serialize(key)); return serializer.deserialize(res); } }); return result; } }
六:接口测试
创建RedisController
package com.example.demo.controller; import com.example.demo.core.ret.RetResponse; import com.example.demo.core.ret.RetResult; import com.example.demo.service.RedisService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * @author 张瑶 * @Description: * @date 2018/4/30 11:28 */ @RestController @RequestMapping("redis") public class RedisController { @Resource private RedisService redisService; @PostMapping("/setRedis") public RetResultsetRedis(String name) { redisService.set("name",name); return RetResponse.makeOKRsp(name); } @PostMapping("/getRedis") public RetResult getRedis() { String name = redisService.get("name"); return RetResponse.makeOKRsp(name); } }
(九)SpringBoot整合redis框架
标签:exception pack art lib config date fas pop example
原文地址:https://www.cnblogs.com/yui66/p/9632769.html
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:(九)SpringBoot整合redis框架
文章链接:http://soscw.com/index.php/essay/94229.html
文章标题:(九)SpringBoot整合redis框架
文章链接:http://soscw.com/index.php/essay/94229.html
评论
亲,登录后才可以留言!