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 编程支持等 ...
随机推荐
- 在eclipse中建立lua开发环境
1. 给你的eclipse安装LuaEclipse,新增Eclipse Software Update Site“http://luaeclipse.luaforge.net/update-site ...
- dos taskkill 命令
C:\Users\asn\Desktop>taskkill /? TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter ...
- IDEA sql自动补全/sql自动提示/sql列名提示
一.启用idea的database插件 File->Settings->Plugins 搜索Database Tools and SQL 选择Enable 启用或者勾选 二.新建Datab ...
- 在CentOS7上安装ftp服务器用于保存服务端上传的图片。
1.CentOS卸载vsftpd的方法 如果服务器上已经安装了vsftpd服务,配置出错需要卸载vsftpd服务. 1.1 查找vsftpd服务 [root@localhost /]# rpm -aq ...
- Python--day46--MySQL视图
1,创建一个视图(给临时表起一个别名v1),视图也虚拟出来的,并非真正的物理表,不能直接往里面插数据.它的数据是动态的读出来的. create view v1 as select * from use ...
- 清除SVN未版控文件
用Git时,git clean -df 可以清除所有没有add的文件,得到一个干净的工作空间. 用SVN没有这样的命令,当然可以 svn export 得到一个干净的工作空间,但会花很长时间,而且没有 ...
- 无限调用函数add(1)(2)(3)......
无限调用函数,并且累计结果 其实这也算一道面试题吧,笔者曾经被提问过,可惜当时没能答上来...
- linux 使用 gdb
gdb 对于看系统内部是非常有用. 在这个级别精通调试器的使用要求对 gdb 命令有信心, 需要理解目标平台的汇编代码, 以及对应源码和优化的汇编码的能力. 调试器必须把内核作为一个应用程序来调用. ...
- liunx printk 函数消息是如何记录的
printk 函数将消息写入一个 LOG_BUF_LEN 字节长的环形缓存, 长度值从 4 KB 到 1 MB, 由配置内核时选择. 这个函数接着唤醒任何在等待消息的进程, 就是说, 任何在系统 ...
- Linux 设备模型
在 2.5 开发循环中一个声明的目标是为内核创建一个统一的设备模型. 之前的内核没有单一的数据结 构, 使它们可以来获取关于系统如何整合的信息. 尽管缺乏信息, 有时事情也进行的不错. 新系统, 带 ...