当前位置: 首页 > 编程日记 > 正文

springboot redis配置

1、引入maven依赖

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

2、redis连接配置

spring:redis:host: 10.220.1.41port: 6379timeout: 10000password:jedis:pool:#最大连接数max-active: 8#最大阻塞等待时间(负数表示没限制)max-wait: -1ms#最大空闲max-idle: 8#最小空闲min-idle: 0

3、redisTemplate配置,其实springboot2不配置也是可以直接使用的,但是我们可以指定一下key,value序列化的方式,如下

@Configuration
public class RedisConfiguration extends CachingConfigurerSupport {@Bean@Overridepublic KeyGenerator keyGenerator() {return (target, method, params) -> {StringBuilder sb = new StringBuilder();sb.append(target.getClass().getName());sb.append(method.getName());for (Object obj : params) {sb.append(obj.toString());}return sb.toString();};}@Beanpublic CacheManager cacheManager(RedisConnectionFactory connectionFactory) {return RedisCacheManager.builder(connectionFactory).build();}@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());redisTemplate.afterPropertiesSet();return redisTemplate;}
}

4、KeyPrefix类定义,方便管理key的前缀与超时时间(防止key管理混乱,出现后面的key覆盖前面的key的情况)

public class KeyPrefix {private String prefix;private Long timeout;//0或负数或空是表示永不过期public KeyPrefix(String prefix, Long timeout) {this.prefix = prefix;this.timeout = timeout;}

  //所有的key前缀统一在这了定义,方便管理
public static KeyPrefix LOGIN_USER_KP = new KeyPrefix("login_user_",10000L);public String getPrefix() {return prefix;}public void setPrefix(String prefix) {this.prefix = prefix;}public Long getTimeout() {return timeout;}public void setTimeout(Long timeout) {this.timeout = timeout;} }

5、写一个通用的服务类,键值对的插入和查询等

@Component
public class RedisService<HK, V> {private RedisTemplate<String, V> redisTemplate;private HashOperations<String, HK, V> hashOperations;private ListOperations<String, V> listOperations;private ZSetOperations<String, V> zSetOperations;private SetOperations<String, V> setOperations;private ValueOperations<String, V> valueOperations;@Autowiredpublic RedisService(RedisTemplate<String, V> redisTemplate) {this.redisTemplate = redisTemplate;this.hashOperations = redisTemplate.opsForHash();this.listOperations = redisTemplate.opsForList();this.zSetOperations = redisTemplate.opsForZSet();this.setOperations = redisTemplate.opsForSet();this.valueOperations = redisTemplate.opsForValue();}public void hashPut(String key, HK hashKey, V value) {hashOperations.put(key, hashKey, value);}public Map<HK, V> hashFindAll(String key) {return hashOperations.entries(key);}public V hashGet(String key, HK hashKey) {return hashOperations.get(key, hashKey);}public void hashRemove(String key, HK hashKey) {hashOperations.delete(key, hashKey);}public Long listPush(String key, V value) {return listOperations.rightPush(key, value);}public Long listUnshift(String key, V value) {return listOperations.leftPush(key, value);}public List<V> listFindAll(String key) {if (!redisTemplate.hasKey(key)) {return null;}return listOperations.range(key, 0, listOperations.size(key));}public V listLPop(String key) {return listOperations.leftPop(key);}public void setValue(String key, V value) {valueOperations.set(key, value);}public void setValue(KeyPrefix kp, String key, V value) {Long timeout = kp .getTimeout();if(timeout == null || timeout <= 0){this.setValue(kp.getPrefix() + key, value);}else{this.setValue(kp.getPrefix() + key, value, kp.getTimeout());}}public void setValue(String key, V value, long timeout) {valueOperations.set(key, value, timeout, TimeUnit.MILLISECONDS);}public V getValue(String key) {return valueOperations.get(key);}public void remove(String key) {redisTemplate.delete(key);}public boolean expire(String key, long timeout, TimeUnit timeUnit) {return redisTemplate.expire(key, timeout, timeUnit);}}

6、测试

@SpringBootTest
@RunWith(SpringRunner.class)
@Component
public class SpringRedisTest {@Autowiredprivate RedisService<String, Users> redisService;@Testpublic void set(){Users user = new Users();user.setUserId(1L);user.setUsername("tom");user.setPassword("123");redisService.setValue("user_tom", user);}}

转载于:https://www.cnblogs.com/lilianggui/p/10129001.html

相关文章:

C# 根据节点索引访问XML配置文件

查了一些&#xff0c;都是根据XML属性来访问指定节点&#xff0c;我这想根据节点索引来访问XML 首先上XML样式 1 <?xml version"1.0" encoding"utf-8" ?> 2 <FeatureClasses> 3 <FeatureClass name "t_room"></Feat…

ASP.NET DEMO 14: 如何在 GridView/DataGrid 模板列中使用自动回发的 CheckBox/DropDownList

有时候希望在 GridView 模板中使用自动回发的 CheckBox &#xff08;autopostbacktrue) &#xff0c;但是 CheckBox 没有 CommandName 属性&#xff0c;因此也就无法在 GridView.RowCommand 事件中处理&#xff0c;并且如何获取当前 GridView 行信息呢&#xff1f;我们可以选择…

BI.寒号鸟请吃烧烤/意外入手“speed- dear friends vol.1”/入手“鲍家街43号”/我爱红红/我爱红红...

先说&#xff0c;昨天下午&#xff0c;在逛完西北政法的乐图后&#xff0c;辗转到了高新区&#xff0c;见到了在经典论坛认识的热情的热心的热烈的寒号鸟兄弟&#xff0c;而notus本人则感动的热泪盈眶&#xff0c;想不到在遥远的西安&#xff0c;都有人惦记着我 T_T附上我们的合…

数据结构----单链表增删改查

单链表的增删改查 一、链表&#xff08;Linked List&#xff09; 链表是有序列表&#xff0c;以节点的方式来存储的&#xff0c;链式存储&#xff1b;每个节点包含data域&#xff0c;next域&#xff1a;指向下一节点&#xff1b;链表的各个节点不一定是连续存储&#xff1b;链…

Using NUnit with Visual Studio 2005 Express Editions

允许通过Build Toolbar选择"Debug" or "Relese"设置"工具" -> "选项..." -> 选择"显示所有设置" -> "项目和解决方案" ->选择"显示高级生成配置" 在VS2k5 Express工程中使用NUnit-GUI测试&…

代理上网环境下配置TortoiseCVS

以NASA Wind World为例&#xff0c;SF上的提示如下&#xff1a; http://sourceforge.net/cvs/?group_id69528 Anonymous CVS Access This projects SourceForge.net CVS repository can be checked out through anonymous (pserver) CVS with the following instruction set.…

ucos-iii串口用信号量及环形队列中断发送,用内建消息队列中断接收

串口发送部分代码&#xff1a; //通过信号量的方法发送数据 void usart1SendData(CPU_INT08U ch) {OS_ERR err;CPU_INT08U isTheFirstCh;OSSemPend(&Usart1Sem, 0, OS_OPT_PEND_BLOCKING, NULL, &err);//阻塞型等待串口发送资源OSSemPend(&Usart1TxBufSem, 0, OS_O…

几款自用的IDEA高效插件

idea几款自用的高效小插件1、CodeGlance2、Translation3、Rainbow Brackets4、Statistic5、Markdown Navigator6、MarkDown Navigator1、CodeGlance CodeGlance是一款非常好用的代码地图插件&#xff0c;可以在代码编辑区的右侧生成一个竖向可拖动的代码缩略区&#xff0c;可以…

CSS中position属性( absolute | relative | static | fixed )详解

我们先来看看CSS3 Api中对position属性的相关定义&#xff1a; static&#xff1a;无特殊定位&#xff0c;对象遵循正常文档流。top&#xff0c;right&#xff0c;bottom&#xff0c;left等属性不会被应用。 relative&#xff1a;对象遵循正常文档流&#xff0c;但将依据top&am…

ASP.NET 2.0 ajax中gridView的刷新问题!

我是一个经常使用ASP.NET2.0的开发人员,最近看了ajax课程,也想使用一下Ajax这个强大的技术,我就使用了,在一个UpdatePanel中放入了一个gridView,果然能达我的满意效果,设置了gridView中的分页,相应的代码我都已经写好了.唯一的问题是当我点击了第二页的时候,我再点击刷新,当前页…

心灵小栈: 镌刻在地下500米的母爱

这位母亲叫赵平饺&#xff0c;今年48岁。谁能想到&#xff0c;在不见天日的煤井深处&#xff0c;她已经弓着脊梁爬行了13 年。1993年&#xff0c;赵平姣的丈夫陈达初在井下作业时被矿车压断了右手的三根手指。此后他只能在井上干轻活&#xff0c;收入少了一大截。为了供女儿陈娟…

js学习总结----crm客户管理系统之项目开发流程和api接口文档

CRM ->客户管理系统 CMS ->内容发布管理系统 ERP ->企业战略信息管理系统 OA -> 企业办公管理系统 产品 / UI设计&#xff1a;需求分析&#xff0c;产品定位&#xff0c;市场调查...按照产品的规划设计出对应的效果图(PSD->photoshop) 前端开发工程师 API接口文…

数据结构--数组队列的实现

数据结构--数组模拟队列1. 说明2. 实现代码1. 数组队列类2.数组队列测试类3.代码运行结果3.完整代码1. 说明 队列是一个有序列表&#xff0c;可以用数组或者链表来实现。 遵循先入先出&#xff08;FIFO&#xff09;的原则&#xff0c;即先存入列的数据&#xff0c;会被先取出&…

DIV+CSS一行两列布局

实现效果&#xff1a; main 我是包在外面的div col1 我是第一列col2 我是第二列clear-float;我用来清除浮动&#xff08;清除float&#xff09;以下是说明&#xff1a;CSS代码&#xff1a;.main{width:800px;/* 总的宽度 */ background:red; } .main .col1{ float:left;/* 这个…

编程上标和下标使用方法

1.问题&#xff1a;写代码要求显示平方、立方、化学符号等等完全写不出来&#xff0c;Word写出来复制出来也不管用 2.办法&#xff1a;Unicode下标和上标 3.举例&#xff1a;string.Format("{0} km\xB2"&#xff0c;1000&#xff09;&#xff0c;单位是平方千米&…

上周新闻回顾:微软补丁个个紧急 奥运网络百花齐放

也许是美国不是黄金周的原因&#xff0c;五一刚过&#xff0c;直接来自国外的新产品发布等IT新闻就源源不断涌来&#xff0c;倒是国内的新闻发布不是非常多。不过&#xff0c;微软的5月安全补丁如期发布&#xff0c;还是值得大家关注的。此外&#xff0c;关于2008年奥运会网络建…

rest-framework之解析器

rest-framework之解析器 本文目录 一 解析器的作用二 全局使用解析器三 局部使用解析器四 源码分析回到目录一 解析器的作用 根据请求头 content-type 选择对应的解析器对请求体内容进行处理。 有application/json&#xff0c;x-www-form-urlencoded&#xff0c;form-data等格式…

httpd常用配置

author&#xff1a;JevonWei版权声明&#xff1a;原创作品 检查配置文件时&#xff0c;如下提示&#xff0c;则因为没有server的服务名称导致&#xff0c;故设置网站的服务server名称&#xff0c;若没有设置web服务名&#xff0c;主默认解析系统主机名(添加主机名解析) [rootda…

[导入]C#中实现Socket端口复用

一、什么是端口复用&#xff1a;   因为在winsock的实现中&#xff0c;对于服务器的绑定是可以多重绑定的&#xff0c;在确定多重绑定使用谁的时候&#xff0c;根据一条原则是谁的指定最明确则将包递交给谁&#xff0c;而且没有权限之分。这种多重绑定便称之为端口复用。 二、…

数据结构学习系列文章合集

数据结构学习系列文章目录前言1.稀疏数组和队列稀疏数组和二位数组的转换数组队列的实现环形队列的介绍与实现2.链表单链表的增、删、改、查总结前言 学习数据结构记录&#xff0c;作为自己的笔记&#xff0c;同时也可以方便大家一起交流和学习 1.稀疏数组和队列 稀疏数组和二…

支付宝Payto接口的c#.net实现

它现在这种支付方式比较多象网银在线等使用的方法都是url验证&#xff0c;就是通过url参数和一个这些url参数的md5编码来确认这个连接的正确性&#xff0c;支付宝在你购买成功后跳转自定义连接的时候会传2次过来&#xff0c;第一次是数据底层请求&#xff0c;第二次是web请求&a…

【Visual Studio 扩展工具】如何在ComponentOneFlexGrid树中显示RadioButton

概述 在ComponentOne Enterprise .NET控件集中&#xff0c;FlexGrid表格控件是用户使用频率最高的控件之一。它是一个功能强大的数据管理工具&#xff0c;轻盈且灵动&#xff0c;以分层的形式展示数据&#xff08;数据呈现更加直观&#xff09;。 FlexGrid 简介 FlexGrid 是业界…

如何 SQL Server 2005 实例之间传输登录和密码

INTRODUCTION 本文介绍如何不同服务器上的 Microsoft SQL Server 2005 实例之间传输登录和密码。 本文, 服务器 A 和服务器 B 是不同的服务器。 此外, 服务器 A 和 B 服务器都运行 SQL Server 2005。 将数据库从服务器 A 上的 SQLServer 实例移到 B, 服务器上的 SQLServer 实例…

IDEA配置GitHub报错GitHub Invalid authentication data.404 Not Found-Not Found

登录账户GitHub Invalid authentication data.404 Not Found-Not Found报错及解决办法1 登录自己的github账号--》头像---》settting2 Developer settings3 Personal access tokens4 回到IDEA中&#xff0c;粘贴上自己的token就可以了想要把自己的代码上传到GitHub中&#xff0…

console.log 简写

console.log 简写 平常代码调试总会用到console.log&#xff0c;但是每次写这么长也是很麻烦&#xff0c;就想着存一个简介一点的变量&#xff1b; 然后就随手写了下面代码&#xff1b; var a 10;var log console.log;log(a);调用的时候发现火狐浏览器报错了&#xff0c;仔细…

为何我的BLOG不能DIY?

今天想把MODULE调整一下&#xff0c;居然搞不定。估计是服务器又出问题了........不知道51CTO有没有备份我们的博克呀&#xff1f;

Java中的自动装箱和拆箱

自动装箱和拆箱自动装箱和拆箱自动装箱&#xff1a;拆箱1. 为什么要有包装类(或封装类&#xff09;2. 基本数据类型与对应的包装类&#xff1a;3. 类型间的转换4. 何时发生自动装箱和拆箱赋值、数值运算时方法调用时&#xff1a;自动装箱、拆箱中的坑自动装箱和拆箱 目的&…

【Java】身份证号码验证

代码引用自&#xff1a;https://gitee.com/appleat/codes/ynrtqujv0wfgesm8ia9b547 1 package xxx;2 3 /**4 * Created by wdj on 2017/6/21.5 */6 7 import java.text.ParseException;8 import java.text.SimpleDateFormat;9 import java.util.Calendar;10 import java.util…

linux history记录格式修改

#保存一万条命令记录 sed -i s/^HISTSIZE1000/HISTSIZE10000/g /etc/profile#在/etc/profile的文件尾部添加如下行数配置信息 ######jiagu history xianshi######### USER_IPwho -u am i 2>/dev/null | awk {print $NF} | sed -e s/[()]//g if [ "$USER_IP" &quo…

从EAI到SOA

写在前面SOA现在越发闹腾的厉害了&#xff0c;各种宣传越来越多&#xff0c;都把SOA吹上天&#xff1b;到底SOA是什么&#xff0c;有啥神奇之处&#xff0c;真的想宣传说的那么好吗&#xff1f;看了种种文章&#xff0c;只是越发混沌。罢了&#xff0c;俺做技术的&#xff0c;商…