springboot2 整合redis
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的更多相关文章
- SpringBoot2整合Redis缓存
遵循SpringBoot三板斧 第一步加依赖 <!-- Redis --> <dependency> <groupId>org.springframework.bo ...
- SpringBoot2整合Redis多数据源
配置文件属性 spring: redis: database: 1 host: 192.168.50.144 port: 6379 password: timeout: 600 #Springboot ...
- SpringBoot2整合Redis
pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 手把手教你SpringBoot2整合Redis
此文仅为初学java的同学学习,大佬请勿喷,文末我会附上完整代码包供大家参考 redis的搭建教程此处略过,大家自行百度,本文的教程开始: 一.先在pom.xml中添加相关依赖 <!--redi ...
- SpringBoot2.x整合Redis实战 4节课
1.分布式缓存Redis介绍 简介:讲解为什么要用缓存和介绍什么是Redis,新手练习工具 1.redis官网 https://redis.io/download 2.新手 ...
- 小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 ...
- springboot2.2.2企业级项目整合redis与redis 工具类大全
1.springboot2.2.2整合redis教程很多,为此编写了比较完整的redis工具类,符合企业级开发使用的工具类 2.springboot与redis maven相关的依赖 <depe ...
- Springboot2.0整合Redis(注解开发)
一. pom.xm文件引入对应jar包 <dependency> <groupId>org.springframework.boot</groupId> <a ...
- SpringBoot2.0整合Redis
Spring Boot2.0在2018年3月份正式发布,相比1.0还是有比较多的改动,例如SpringBoot 自2.0起支持jdk1.8及以上的版本.第三方类库升级.响应式 Spring 编程支持等 ...
随机推荐
- HDU 5974"A Simple Math Problem"(GCD(a,b) = GCD(a+b,ab) = 1)
传送门 •题意 已知 $a,b$,求满足 $x+y=a\ ,\ LCM(x,y)=b$ 条件的 $x,y$: 其中,$a,b$ 为正整数,$x,y$ 为整数: •题解 关键式子:设 $a,b$ 为正整 ...
- laravel 常用文档
[ Laravel 5.6 文档 ] 快速入门 —— 目录结构 laravel学院 http://laravelacademy.org/post/8657.html Laravel 的缓存系统 ...
- Python--day41--守护线程
1,守护线程:守护线程会在主线程结束之后等待其他子线程的结束才结束 拓展--守护进程:守护进程随着主进程代码的执行结束而结束 代码示例:守护线程.py import time from threadi ...
- nginx调用PHP有sock方式和端口方式
nginx调用PHP有sock方式和端口方式 1.确认nginx已经调用了php;2.先确认你的nginx使用什么方式调用PHP:3.如果使用端口方式,端口对不对应,如果使用SOCK方式,那么路径对不 ...
- P1020 从大到小排序
题目描述 给你n个整数,请你按照从大到小的顺序输出它们. 输入格式 输入的第一行包含一个整数 \(n(1 \le n \le 10^3)\) ,用于表示元素的个数. 输入的第二行包含 \(n\) 个整 ...
- 2018-11-8-WPF-获取下载内容长度
title author date CreateTime categories WPF 获取下载内容长度 lindexi 2018-11-08 20:18:15 +0800 2018-11-08 20 ...
- 用nodejs创建服务器显示html页面
nodejs版本:v10.14.2 1.首先准备一个简单的html页面 <!DOCTYPE html> <html lang="en"> <head& ...
- tensorflow在文本处理中的使用——skip-gram & CBOW原理总结
摘自:http://www.cnblogs.com/pinard/p/7160330.html 先看下列三篇,再理解此篇会更容易些(个人意见) skip-gram,CBOW,Word2Vec 词向量基 ...
- 给培训学校讲解ORM框架的课件
导读:这是我给某培训学校培训.net程序员所设计的课件,他们普遍反映太难了,是这样吗?
- HDU6383p1m2(二分)
补个题.. 传送门 点我 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...