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. 深入java面向对象二:final关键字

    文章内容源于对<疯狂java讲义>及<疯狂Java:突破程序员基本功的16课>学习和总结. 一. final成员变量 final 修饰变量时,表示该变量一旦获取了值就不可以改变 ...

  2. 我来教你用AWS IoT.Part1--配置和接入

    AWS的IOT服务在中国区才开放.由于工作原因需要简单试用评估.写一下自己简单试用的流程,供其他人参考. 直接贴流程 1.先注册一个类型(这里“类型”相对于编程,可以理解为父类,里面可以添加一些可继承 ...

  3. linux如何查看nginx是否启动

    Nginx是一个高性能的反向代理服务器,现在一般作为我们网站或其他Web服务的第一层代理,用户在浏览器请求首先经过的就是Nginx服务. 如果Nginx服务没有启动或异常结束,将会影响Web服务的正常 ...

  4. SpringBoot集成thymeleaf(自定义)模板中文乱码的解决办法

    楼主今天在学习SpringBoot集成thymelaf的时候报了中文乱码的错误,经过网上的搜索,现在得到解决的办法,分享给大家: package com.imooc.config; import or ...

  5. java 泛型的嵌套(map例子)

    package july7; //泛型加Map的输出! import java.util.Iterator; import java.util.Map; import java.util.Map.En ...

  6. JDK自带的native2ascii工具介绍

    背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码.原因是java ...

  7. css3动画@keyframes示例

    .active { animation: chuiziza 0.5s ease 1 forwards; } .feijindan { display: block; animation: fei 2s ...

  8. js中的克隆

    1.如果克隆对象是基本类型,直接复制就可以 <script type="text/javascript"> var str1 = 'abc' var str2 = st ...

  9. easypermissions拒绝权限后闪退。 java.lang.NoSuchMethodError: No virtual method isStateSaved()Z in class Landroid/support/v4/app/FragmentManager

    Process: com.tazan.cd.streetlight, PID: 18825 java.lang.NoSuchMethodError: No virtual method isState ...

  10. 【Composer】PHP开发者必须了解!

    Composer是一个非常流行的PHP包依赖管理工具,已经取代PEAR包管理器,对于PHP开发者来说掌握Composer是必须的. 对于使用者来说Composer非常的简单,通过简单的一条命令将需要的 ...