ssm框架的配置和redis的介绍安装及命令见链接:
IDEA下spring+spring mvc+mybatis+mysql+maven框架搭建
添加Maven依赖:
在pom.xml文件中添加redis依赖,如下:
<!--import redis dependency--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.0.2.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.1.0</version> </dependency>
建立redis.properties资源文件:
将redis服务的常用配置从项目中分离出来,方便项目的移植和管理。
redis.key.prefix=redis_key redis.host=localhost redis.port=6379 redis.maxIdle=300 redis.maxActive=600 redis.maxWait=1000 redis.testOnBorrow=true
建立抽闲类AbstractBaseRedisDao类
建立AbstractBaseRedisDao.java类:
package com.demon.util.redis.service; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; import javax.annotation.Resource; /** * @author [email protected] * @date 2018/3/22 14:02 */ public abstract class AbstractBaseRedisDao<K, V> { @Resource private RedisTemplate<K, V> redisTemplate; /** * 设置redisTemplate * * @param redisTemplate the redisTemplate to set */ public void setRedisTemplate(RedisTemplate<K, V> redisTemplate) { this.redisTemplate = redisTemplate; } /** * 获取 RedisSerializer * <br>------------------------------<br> */ RedisSerializer<String> getRedisSerializer() { return redisTemplate.getStringSerializer(); } }
建立RedisService接口,封装相应的Redis操作:
新建RedisService.java:
package com.demon.util.redis.service; import java.util.List; /** * @author [email protected] * @date 2018/3/22 14:05 */ public interface RedisService { /** * @param key key * @param value value * @description set a key to redis */ boolean add(String key, String value); /** * @param keys keys * @param values values * @description 批量增加 */ boolean addByList(List<String> keys, List<String> values); /** * @param key key * @description delete a key from redis */ void delete(String key); /** * @param key key * @value value new value * @description update */ boolean update(String key, String newValue); /** * @param key key * @description get a value by key */ String get(String key); }
添加RedisServiceImpl实现类:
package com.demon.util.redis.service; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; import redis.clients.jedis.ShardedJedis; import javax.annotation.Resource; import java.io.Serializable; import java.util.List; /** * @author [email protected] * @date 2018/3/22 14:17 */ public class RedisServiceImpl extends AbstractBaseRedisDao implements RedisService { @Resource private RedisTemplate<Serializable, Serializable> redisTemplate; public boolean add(final String key, final String value) { return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> { RedisSerializer<String> redisSerializer = getRedisSerializer(); byte[] keyByte = redisSerializer.serialize(key); byte[] valuesByte = redisSerializer.serialize(value); return redisConnection.setNX(keyByte, valuesByte); }); } public boolean addByList(final List<String> keys, final List<String> values) { return redisTemplate.execute(redisConnection -> { final RedisSerializer<String> redisSerializer = getRedisSerializer(); //TODO resolve the for not loop problem for (int i = 0; i < values.size(); i++) { byte[] keyByte = redisSerializer.serialize(keys.get(i)); byte[] valueByte = redisSerializer.serialize(values.get(i)); return redisConnection.setNX(keyByte, valueByte); } return true; }, false, false); } public void delete(String key) { redisTemplate.execute((RedisCallback<Long>) redisConnection -> { RedisSerializer<String> redisSerializer = getRedisSerializer(); byte[] keyByte = redisSerializer.serialize(key); return redisConnection.del(keyByte); }); } public boolean update(final String key, final String newValue) { if (get(key) == null) { throw new NullPointerException("数据不存在,key = " + key); } return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> { RedisSerializer<String> redisSerializer = getRedisSerializer(); byte[] keyByte = redisSerializer.serialize(key); byte[] newValueByte = redisSerializer.serialize(newValue); redisConnection.set(keyByte, newValueByte); return true; }); } public String get(final String key) { return redisTemplate.execute((RedisCallback<String>) redisConnection -> { RedisSerializer<String> redisSerializer = getRedisSerializer(); byte[] keyByte = redisSerializer.serialize(key); byte[] value = redisConnection.get(keyByte); return redisSerializer.deserialize(value); }); } }
可以根据Redis命令实现相应的方法,这里实现了全部的Redis操作:
java之redis篇(spring-data-redis整合)
扫描二维码关注公众号,回复:
1037173 查看本文章
添加测试:
测试省略。
以上です、
簡単ですが、ここで終わります!