1、添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>

2、引入yml

redis:
host: <your-host>
password: 123456
jedis:
pool:
max-active: 8
max-idle: 8
max-wait: -1ms
min-idle: 0

没有密码可以留空,自己改host,默认端口6379

3、添加配置

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer; import java.io.Serializable; @Configuration
public class RedisConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(RedisConfig.class); // serializable
@Bean
public RedisTemplate<String, Serializable> redisTemplate
(LettuceConnectionFactory redisConnectionFactory) {
LOGGER.info("RedisConfig bean created");
RedisTemplate<String, Serializable> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}

4、上代码(源于网上复制,找不到当时的地址了,在此引用,很多方法没有测试过,主要用了vset,vget)

@Service
public class RedisUtils { @Autowired
private RedisTemplate redisTemplate; /**
* 判断缓存中是否有对应的value
*
* @param key
* @return boolean
*/
public boolean existsKey(final Object key) {
return redisTemplate.hasKey(key);
} /**
* 根据key获取key列表(key值可为模糊匹配---taskInfo:taskDetail:* <---> *代表任意字符)
*
* @param pattern
* @return Set<Object>
*/
public Set<Object> keys(final Object pattern) {
return redisTemplate.keys(pattern);
} /**
* 根据key删除对应的value
*
* @param key
*/
public boolean delete(final Object key) {
return redisTemplate.delete(key);
} /**
* 根据key获取个数
*
* @param key
*/
public int count(final Object key) {
return redisTemplate.keys(key).size();
} /**
* 批量删除key(key值可为模糊匹配---taskInfo:taskDetail:* <---> *代表任意字符)
*
* @param pattern
*/
public long deletePattern(final Object pattern) {
Set<Object> keys = redisTemplate.keys(pattern);
if ((keys != null ? keys.size() : 0) > 0) {
return redisTemplate.delete(keys);
} else {
return 0;
}
} /**
* 批量删除对应的value
*
* @param keys
*/
public void delete(final String[] keys) {
for (String key : keys) {
delete(key);
}
} /**
* 批量删除对应的value
*
* @param keys
*/
public long delete(final Set<Object> keys) {
return redisTemplate.delete(keys);
} /**
* 写入缓存(操作字符串)
*
* @param key
* @param value
* @return boolean
*/
public boolean vSet(final Object key, Object value) {
boolean result = false;
try {
ValueOperations<Object, Object> operations = redisTemplate.opsForValue();
operations.set(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
} /**
* 写入缓存设置时效时间(操作字符串)
*
* @param key
* @param value
* @return boolean
*/
public boolean vSet(final Object key, Object value, Long expireTime) {
boolean result = false;
try {
ValueOperations<Object, Object> operations = redisTemplate.opsForValue();
operations.set(key, value);
redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
} /**
* 更新写入缓存设置时效时间(操作字符串)
*
* @param key
* @return boolean
*/
public boolean vSetUpdate(final Object key, Long expireTime) {
boolean result = false;
try {
redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
} /**
* 读取缓存(操作字符串)
*
* @param key
* @return Object
*/
public Object vGet(final Object key) {
Object result = null;
ValueOperations<Object, Object> operations = redisTemplate.opsForValue();
result = operations.get(key);
return result;
} /**
* 哈希 添加(操作hash)
*
* @param key
* @param hashKey
* @param value
*/
public void hmSet(Object key, Object hashKey, Object value) {
HashOperations<Object, Object, Object> hash = redisTemplate.opsForHash();
hash.put(key, hashKey, value);
} /**
* 哈希 添加(操作hash)
*
* @param key
* @param map
*/
public void hmSetAll(Object key, Map<Object, Object> map) {
HashOperations<Object, Object, Object> hash = redisTemplate.opsForHash();
hash.putAll(key, map);
} /**
* 哈希获取数据(操作hash)
*
* @param key
* @return Map<Object, Object>
*/
public Map<Object, Object> hmGet(Object key) {
HashOperations<Object, Object, Object> hash = redisTemplate.opsForHash();
return hash.entries(key);
} /**
* 哈希获取数据(操作hash)
*
* @param key
* @param hashKey
* @return Object
*/
public Object hmGet(Object key, Object hashKey) {
HashOperations<Object, Object, Object> hash = redisTemplate.opsForHash();
return hash.get(key, hashKey);
} /**
* 哈希删除数据(操作hash)
*
* @param key
* @param hashKey
* @return Object
*/
public Object hmDel(Object key, Object hashKey) {
HashOperations<Object, Object, Object> hash = redisTemplate.opsForHash();
return hash.delete(key, hashKey);
} /**
* 获取列表中个数
*
* @param k
* @return long
*/
public long lSize(Object k) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.size(k);
} /**
* 根据key获取获取List列表(操作list)
*
* @param k
* @return Object
*/
public Object lRange(Object k) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.range(k, 0, list.size(k));
} /**
* 根据key获取列表中第start至end的数据(操作list)
*
* @param k
* @param start
* @param end
* @return List<Object>
*/
public List<?> lRange(Object k, long start, long end) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.range(k, start, end);
} /**
* 通过其索引从列表获取第一个元素(操作list)
*
* @param k
* @return Object
*/
public Object lindexFirst(Object k) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.index(k, 0);
} /**
* 通过其索引从列表获取元素(操作list)
*
* @param k
* @param index:索引位置,从0开始
* @return Object
*/
public Object lindex(Object k, long index) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.index(k, index);
} /**
* 从左向右添加列表(操作list)
*
* @param k
* @param v
*/
public void lLeftPush(Object k, Object v) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
list.leftPush(k, v);
} /**
* 从左向右添加列表(操作list);如果bool=true,会删除列表中已经存在的数据,然后再进行添加(仅针对字符串列表,其它待测)
*
* @param k
* @param v
* @param bool
*/
public void lLeftPush(Object k, Object v, boolean bool) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
if (bool) {
list.remove(k, list.size(k), v);
}
list.leftPush(k, v);
} /**
* 从左向右添加列表(操作list)
*
* @param k
* @param lst
*/
public void lLeftPushAll(Object k, List<Object> lst) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
list.leftPushAll(k, lst);
} /**
* 从右向左添加列表(操作list);如果bool=true,会删除列表中已经存在的数据,然后再进行添加(仅针对字符串列表,其它待测)
*
* @param k
* @param v
* @param bool
*/
public void lRightPush(Object k, Object v, boolean bool) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
if (bool) {
list.remove(k, list.size(k), v);
}
list.rightPush(k, v);
} /**
* 从右向左添加列表(操作list)
*
* @param k
* @param v
*/
public void lRightPush(Object k, Object v) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
list.rightPush(k, v);
} /**
* 从右向左添加列表(操作list)
*
* @param k
* @param lst
*/
public void lRightPushAll(Object k, List<Object> lst) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
list.rightPushAll(k, lst);
} /**
* 删除并获取列表中的第1个元素(操作list)
*
* @param k
* @return Object
*/
public Object lLeftPop(Object k) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.leftPop(k);
} /**
* 删除并获取列表中的最后1个元素(操作list)
*
* @param k
* @return Object
*/
public Object lRightPop(Object k) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.rightPop(k);
} /**
* 移除k中的count个,返回删除的个数;如果没有这个元素则返回0(操作list)
*
* @param k
* @param count
* @return long
*/
public long lRemove(Object k, long count) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.remove(k, 0, null);
} /**
* 移除k中值为v的count个,返回删除的个数;如果没有这个元素则返回0(操作list)
*
* @param k
* @param count
* @param v
* @return long
*/
public long lRemove(Object k, long count, Object v) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.remove(k, count, v);
} /**
* 移除k中值为v的所有数据,返回删除的个数;如果没有这个元素则返回0(操作list)
*
* @param k
* @param v
* @param v
* @return long
*/
public long lRemove(Object k, Object v) {
ListOperations<Object, Object> list = redisTemplate.opsForList();
return list.remove(k, list.size(k), v);
} /**
* 集合添加
*
* @param key
* @param value
*/
public void sAdd(Object key, Object value) {
SetOperations<Object, Object> set = redisTemplate.opsForSet();
set.add(key, value);
} /**
* 集合获取
*
* @param key
* @return Set<Object>
*/
public Set<Object> sMembers(Object key) {
SetOperations<Object, Object> set = redisTemplate.opsForSet();
return set.members(key);
} /**
* 有序集合添加
*
* @param key
* @param value
* @param scoure
*/
public void zAdd(Object key, Object value, double scoure) {
ZSetOperations<Object, Object> zset = redisTemplate.opsForZSet();
zset.add(key, value, scoure);
} /**
* 有序集合获取
*
* @param key
* @param scoure
* @param scoure1
* @return Set<Object>
*/
public Set<Object> rangeByScore(Object key, double scoure, double scoure1) {
ZSetOperations<Object, Object> zset = redisTemplate.opsForZSet();
return zset.rangeByScore(key, scoure, scoure1);
} /**
* 将hashKey中储存的数字加上指定的增量值(操作hash)
*
* @param key
* @param value
* @return boolean
*/
public void hmSetIncrement(Object key, Object hashKey, Long value) {
HashOperations<Object, Object, Object> hash = redisTemplate.opsForHash();
hash.increment(key, hashKey, value);
} }

5、测试(使用参考)

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class RedisTest {
@Autowired
private RedisUtils redisUtils; @Test
void set() {
redisUtils.vSet("name", "sam");
} @Test
void get() {
System.out.println(redisUtils.vGet("name"));
}
}

springboot2 整合redis的更多相关文章

  1. SpringBoot2整合Redis缓存

    遵循SpringBoot三板斧 第一步加依赖 <!-- Redis --> <dependency> <groupId>org.springframework.bo ...

  2. SpringBoot2整合Redis多数据源

    配置文件属性 spring: redis: database: 1 host: 192.168.50.144 port: 6379 password: timeout: 600 #Springboot ...

  3. SpringBoot2整合Redis

    pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  4. 手把手教你SpringBoot2整合Redis

    此文仅为初学java的同学学习,大佬请勿喷,文末我会附上完整代码包供大家参考 redis的搭建教程此处略过,大家自行百度,本文的教程开始: 一.先在pom.xml中添加相关依赖 <!--redi ...

  5. SpringBoot2.x整合Redis实战 4节课

    1.分布式缓存Redis介绍      简介:讲解为什么要用缓存和介绍什么是Redis,新手练习工具 1.redis官网 https://redis.io/download          2.新手 ...

  6. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解

    笔记 3.SpringBoot2.x整合redis实战讲解 简介:使用springboot-starter整合reids实战 1.官网:https://docs.spring.io/spring-bo ...

  7. springboot2.2.2企业级项目整合redis与redis 工具类大全

    1.springboot2.2.2整合redis教程很多,为此编写了比较完整的redis工具类,符合企业级开发使用的工具类 2.springboot与redis maven相关的依赖 <depe ...

  8. Springboot2.0整合Redis(注解开发)

    一. pom.xm文件引入对应jar包 <dependency> <groupId>org.springframework.boot</groupId> <a ...

  9. SpringBoot2.0整合Redis

    Spring Boot2.0在2018年3月份正式发布,相比1.0还是有比较多的改动,例如SpringBoot 自2.0起支持jdk1.8及以上的版本.第三方类库升级.响应式 Spring 编程支持等 ...

随机推荐

  1. codeforces1217-edu

    C The Number Of Good Substrings 我原来的基本思路也是这样,但是写的不够好 注意算前缀和的时候,字符串起始最好从1开始. #include<cstdio> # ...

  2. 指针版的PStash(用一个void指针数组, 来保存存入元素的地址) 附模板化实现 p321

    由容器PStash的使用者,负责清除容器中的所有指针.所以用户必须记住放到容器中的是什么类型,在取出时,把取出的void指针转换成对应的类型指针,然后 'delete 转换后的对象指针',才能在清除时 ...

  3. 【t085】Sramoc问题

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] Sramoc(K,M)表示用数字0,1,2,...,K-1组成的自然数中能被M整除的最小数.给定K,M ...

  4. P1077 旅行

    题目描述 你要进行一个行程为7000KM的旅行,现在沿途有些汽车旅馆,为了安全起见,每天晚上都不开车,住在汽车旅馆,你手里现在已经有一个旅馆列表,用离起点的距离来标识,如下: 0, 990, 1010 ...

  5. Python中&、^与and、or

    导火索:给定两个列表,怎么找出他们相同的元素和不通的元素? list1 = [1, 2, 3, 4, 57, 8, 90] list2 = [2, 3, 4, 5, 6, 7, 8] lis = li ...

  6. C# 转换类型和字符串

    有时候我们需要互转类型和字符串,把字符串转类型.把类型转字符串. 如果是基础类型,可以使用 x.Parse 这个方法,很多基础类型都支持. 那么我们可以使用 TypeDescriptor string ...

  7. vue-learning:18 - js - watch

    watch watch可以监听data和computed中值的变化. watch在实例对象作用域中可以监听实例对象的数据,即var vm = new Vue(options)时作为配置对象属性传入.监 ...

  8. iDrac6 虚拟控制台 连接失败

    最近给公司的服务器升级硬件(其实是服务器要淘汰了,公司就不管了,爱怎么折腾就怎么折腾,只要不坏就行) 服务器配置:Dell PowerEdge R610,E5606 x2(双路2.13G 4核4线程) ...

  9. 复盘:错误理解zuul路径匹配,无法使用zuul

    场景: 项目中用到zuul时,配置url总是有问题,无法路由到对应微服务. 配置如下: zuul: routes: m2-member: path: /member/* serviceId: m2-m ...

  10. Team Foundation Server 2015使用教程【7】:权限为读取器的团队成员连接tfs及checkin操作