一、在pom中导入
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
二、application.yml文件
server: port: 8092 spring: redis: host: 127.0.0.1 #password: redispassword port: 6379 pool: max-idle: 100 min-idle: 1 max-active: 1000 max-wait: -1
三、代码
@Service public class RedisService { @Autowired private StringRedisTemplate stringRedisTemplate; //redis:string类型set public void setString(String key,String value){ stringRedisTemplate.opsForValue().set(key,value); } //redis:string类型get public String getString(String key){ return stringRedisTemplate.opsForValue().get(key); } //redis:hash类型set public void setHash(String key,String filedKey,String value){ stringRedisTemplate.opsForHash().put(key,filedKey,value); } //redis:hash类型的set整个map public void setHashAll(String key,Map<Object,Object> value) { stringRedisTemplate.opsForHash().putAll(key, value); } /** * redis:hash类型的set,如果key存在则不覆盖 * @param key * @param filedKey * @param value */ public void setHashAbsent(String key,String filedKey,String value) { stringRedisTemplate.opsForHash().putIfAbsent(key, filedKey, value); } //redis:hash类型get public String getHash(String key,String filedkey){ String keyvalue = (String) stringRedisTemplate.opsForHash().get(key,filedkey); return keyvalue; } /** * reids:hash类型的get,获取整个map * @param key * @return */ public Map<Object, Object> getHashAll(String key) { Map<Object, Object> a=stringRedisTemplate.opsForHash().entries(key); return a; } /** * reids:list类型的set,leftPush中,pivot参数是list中的value值,如果pivot=bb,即往bb元素前面插入aa * rightPush是往后插入元素,注意:插入成功则返回list的long类型的元素个数,如果不成功则返回-1 * @param key * @param pivot * @param value * @return */ public long setList(String key,String pivot,String value){ long issetok = stringRedisTemplate.opsForList().rightPush(key, pivot, value); return issetok; } /** * redis:list类型的set,set一个list, * @param key * @param values * @return */ public long setListAll(String key,List<String> values) { long issetok=stringRedisTemplate.opsForList().rightPushAll(key, values); return issetok; } /** * redis:list类型get,start=0,end=-1,获取list的全部值 * @param key * @param start * @param end * @return */ public List<String> getList(String key, long start, long end){ List<String> valList = stringRedisTemplate.opsForList().range(key, start, end); return valList; } /** * redis:Set类型set,连续添加多个值,返回添加的个数 * @param key * @param values * @return */ public long setSet(String key,String... values) { long a=stringRedisTemplate.opsForSet().add(key, values); return a; } /** * * redis:Set类set,key集合中不在otherKeys的数据中,新建一个destKey的Set,并存放这些key中的非交集数据 * 注意:Collection otherKeys为多个Set的keyName,也可以是一个,即String otherKeys方法 * 注意:返回的long数据是key Set的不同数据条数 * @param key * @param otherKeys * @param destKey * @return */ public long setSet_differenceAndStore(String key,Collection<String> otherKeys,String destKey) { long a=stringRedisTemplate.opsForSet().differenceAndStore(key, otherKeys, destKey); return a; } /** * redis:Set类的get,比较两个Set的不同,并返回一个不同结果集Set(key Set中不同于otherKey Set的数据) * 注意:返回的Set是key Set中不同于otherKey Set的数据,并不是返回两者全部不同数据 * @param key * @param otherKey * @return */ public Set<String> getSet_difference(String key,String otherKey){ return stringRedisTemplate.opsForSet().difference(key, otherKey); } /** * redis:Set类的get,比较两个Set的相同元素,并返回相同元素的结果集 * 提示:intersectAndStore和differenceAndStore用法类似 * @param key * @param otherKey * @return */ public Set<String> getSet_intersect(String key,String otherKey){ return stringRedisTemplate.opsForSet().intersect(key, otherKey); } /** * redis:Set类的get,获取key Set的全部结果集 * @param key * @return */ public Set<String> getSet_all(String key){ return stringRedisTemplate.opsForSet().members(key); } /** * redis:Set类的get,两个Set的union,返回union之后的结果集 * 注意:得到的Set已去重!!!! * 提示:unionAndStore和intersectAndStore这些的用法类似 * @param key * @param otherKey * @return */ public Set<String> getSet_union(String key,String otherKey){ return stringRedisTemplate.opsForSet().union(key, otherKey); } /** * redis:Set的pop,无序集合,随机删除key Set的元素。 * @param key */ public String popSet(String key){ return stringRedisTemplate.opsForSet().pop(key); } /** * redis:Set的remove,删除key Set中指定的value,删除成功返回删除了的条数,删除失败则返回0 * @param key * @param values * @return */ public long removeSet(String key,Object... values) { long a=stringRedisTemplate.opsForSet().remove(key, values); return a; } /** * @param key * redis:list类型delete * rightPop:从右边逐个删除,返回删除的value,当全部删除完的时候返回null,同时这个list也将不存在 */ public String deleteList(String key){ String issetok = stringRedisTemplate.opsForList().rightPop(key); return issetok; } //设置key的失效时间 public boolean setTimeOut(String key, long outtime){ boolean isKeyOut = stringRedisTemplate.expire(key,outtime,TimeUnit.MINUTES); return isKeyOut; } }
四、测试代码
@Autowired private RedisService redisService; @Test public void testRedis(){ redisService.setString("dashabi","好久不见"); String str= redisService.getString("dashabi"); System.out.println(str); }
五、配置介绍
Spring Data Redis提供了两个模板:
- RedisTemplate
- StringRedisTemplate
RedisTemplate会使用JdkSerializationRedisSerializer,这意味着key和value都会通过Java进行序列化。 StringRedisTemplate默认会使用StringRedisSerializer
所以要是操作字符串的话,用StringRedisTemplate就可以了。但要是想要存储一个对象(比如:User),我们就需要使用RedisTemplate,并对key采用string序列化方式,对value采用json序列化方式,这时候就需要对redisTemplate自定义配置了。
六、操作的api介绍