SpringBoot如何整合Redis?SpringBoot如何使用Redis?Redies基本使用。
目录
一、SpringBoot整合Redis
二、常见数据类型:
1、字符串:
2、哈希 hash :
3、list列表:
4、Set集合:
5、权重有序集合set
6、常用指令:
一、SpringBoot整合Redis
1、SpringBoot Data Redis:
Spring Data Redis中提供了一个高度封装的类:RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下:
类名 | 解释 |
ValueOperations | 简单K-V操作 |
SetOperations | set类型数据操作 |
ZSetOperations | zset类型数据操作 |
HashOperations | 针对map类型的数据操作 |
ListOperations | 针对list类型的数据操作 |
2、导入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
3、配置xml文件:
spring:redis:host: localhostport: 6379database: 0 # redis默认会创建16个数据库,当前是保存在0号数据库jedis:pool:max-active: 8 #最大连接数max-wait: 1ms # 连接池最大等待阻塞时间max-idle: 4 # 连接池最大空闲链接min-idle: 0 #连接池中最小空闲链接
4、书写配置类:
Redis提供的默认序列模式会导致key值存入的时候变形,所以我们需要书写一个配置类来规范这一操作,避免key不对应问题。
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
public class RedisConfig extends CachingConfigurerSupport {@Beanpublic RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();//默认的Key序列化器为:JdkSerializationRedisSerializerredisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setConnectionFactory(connectionFactory);return redisTemplate;}}
5、获取对应对象
optFor*来获取想要操作的对象:
以opsForValue为例,这就相当于在操作字符串类型
二、常见数据类型:
1、字符串:
SET key value | 设置指定key的值1,重复设置会覆盖value,设置的值均为字符串类型 |
GET key | 获取指定key的值 |
SETEX key seconds value | 设置指定key的值,并将 key 的过期时间设为 seconds 秒(验证码服务) |
SETNX key value | 只有在 key 不存在时设置 key 的值 |
测试用例:
在SpringBoot中的应用:
@Testvoid testString() {redisTemplate.opsForValue().set("name2","123"); //设置一个字符串类型的键值对String name = (String) redisTemplate.opsForValue().get("name2"); //取出key=names的值System.out.println(name);//设置一个跟时间相关的key 相当于setexredisTemplate.opsForValue().set("timeKey","timeForTen",10, TimeUnit.SECONDS);//setnx 只有在 key 不存在时设置 key 的值Boolean flag = redisTemplate.opsForValue().setIfAbsent("name2", "456");System.out.println(flag); //返回false,因为name2已经存在,没有设置name2的值}
2、哈希 hash :
HSET key field value | 将哈希表 key 中的字段 field 的值设为 value |
HGET key field | 获取存储在哈希表中指定字段的值 |
HDEL key field | 删除存储在哈希表中的指定字段 |
HKEYS key | 获取哈希表中所有字段 |
HVALS key | 获取哈希表中所有值 |
HGETALL key | 获取在哈希表中指定 key 的所有字段和值 |
测试用例:
在SpringBoot中的应用:
@Testvoid testHash(){//获取操作对象HashOperations hashObj = redisTemplate.opsForHash();//存值hashObj.put("key01","name","xiaoSong");hashObj.put("key01","age","12");hashObj.put("key01","sex","man");//取值String name = (String) hashObj.get("key01", "name");System.out.println(name);//获取全部的键:Set keys = hashObj.keys("key01");for (Object one : keys) {System.out.println(one);}//获取所有的值:List values = hashObj.values("key01");for (Object one : values) {System.out.println(one);}}
3、list列表:
1、list是Redis能实现优先队列的基础
2、列表中是允许有重复元素的
LPUSH key value1 [value2] | 将一个或多个值插入到列表头部 |
LRANGE key start stop | 获取列表指定范围内的元素 |
RPOP key | 移除并获取列表最后一个元素 |
LLEN key | 获取列表长度 |
BRPOP key1 [key2 ] timeout | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时 或发现可弹出元素为止 |
测试用例:
SpringBoot中的应用
@Testvoid testForList(){//获取操作对象ListOperations listObj = redisTemplate.opsForList();//存值listObj.leftPush("list1","a");listObj.leftPushAll("list1","b","c","d");//取值List<String> values = listObj.range("list1",0,-1);for (String one : values) {System.out.println(one); // d b c a}//获取列表长度:Long lsize = listObj.size("list1");int size = lsize.intValue(); //long转化为int类型for (int i = 0; i < size; i++) {//出队列:String value = (String) listObj.rightPop("list1");System.out.println(value); //a b c d }}
4、Set集合:
无序 元素的值唯一
SADD key member1 [member2] | 向集合添加一个或多个成员 |
SMEMBERS key | 返回集合中的所有成员 |
SCARD key | 获取集合的成员数 |
SINTER key1 [key2] | 返回给定所有集合的交集 |
SUNION key1 [key2] | 返回所有给定集合的并集 |
SDIFF key1 [key2] | 返回给定所有集合的差集 |
SREM key member1 [member2] | 移除集合中一个或多个成员 |
用例:
SpringBoot中应用:
@Testvoid testForSet(){//获取对象SetOperations setObj = redisTemplate.opsForSet();//存值:setObj.add("set1","b","c","a");//取值Set<String> setList = setObj.members("set1");for (String one : setList) {System.out.println(one);}//删值:setObj.remove("set1","b");}
5、权重有序集合set
集合中的元素是根据每个元素的权重进行排序,且每个元素不能重复,升序排序
ZADD key score1 member1 [score2 member2] |
向有序集合添加一个或多个成员,或者更新已存在成员的 分数 |
ZRANGE key start stop [WITHSCORES] | 通过索引区间返回有序集合中指定区间内的成员 |
ZINCRBY key increment member | 有序集合中对指定成员的分数加上增量 increment |
ZREM key member [member ...] | 移除有序集合中的一个或多个成员 |
测试用例:
SpringBoot 中的应用:
@Testvoid testForZset(){//获取对象ZSetOperations zsetObj = redisTemplate.opsForZSet();//存值zsetObj.add("zset01","a",10.0);zsetObj.add("zset01","b",12.0);zsetObj.add("zset01","c",4.0);zsetObj.add("zset01","d",7.0);//取值Set<String> list = zsetObj.range("zset01", 0, -1);for (String one : list) {System.out.println(one);}//加分zsetObj.incrementScore("zset01","b",20.0);//删除zsetObj.remove("zset01","a","c");}
6、常用指令:
KEYS pattern | 查找所有符合给定模式( pattern)的 key |
EXISTS key | 检查给定 key 是否存在 |
TYPE key | 返回 key 所储存的值的类型 |
TTL key | 返回给定 key 的剩余生存时间(TTL, time to live),以秒为单位 |
DEL key | 该命令用于在 key 存在是删除 key |
测试用例:
SpringBoot应用:
@Testvoid testCommon(){//获取所有的keySet<String> keys = redisTemplate.keys("*");for (String one : keys) {System.out.println(one);}//判断key是否存在Boolean name = redisTemplate.hasKey("key01");System.out.println(name);//删除指定keyBoolean flag = redisTemplate.delete("zset01");System.out.println(flag);//获取指定key对应的valueDataType type = redisTemplate.type("key01");System.out.println(type);}
SpringBoot如何整合Redis?SpringBoot如何使用Redis?Redies基本使用。相关推荐
- SpringBoot(46) 整合ShedLock实现分布式定时任务(redis版)
文章目录 一.前言 二.SpringBoot整合ShedLock 1.`pom.xml`中引入依赖 2.Shedlock配置类 3.测试数据定时任务 三.本文案例demo源码 一.前言 本文将基于sp ...
- Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...
- SpringBoot第九篇: springboot整合Redis
这篇文章主要介绍springboot整合redis,至于没有接触过redis的同学可以看下这篇文章:5分钟带你入门Redis. 引入依赖: 在pom文件中添加redis依赖: <dependen ...
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...
SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...
- SpringBoot系列十:SpringBoot整合Redis
From: https://www.cnblogs.com/leeSmall/p/8728231.html 声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Sprin ...
- Springboot项目整合redis集群
文章目录 1.redis集群搭建 详情见: https://blog.csdn.net/qq_45076180/article/details/103026150 2.springboot整合redi ...
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例...
SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 1.前言 本文主要介绍使用SpringBoot与shiro实现基 ...
- SpringBoot之整合Redis分析和实现-基于Spring Boot2.0.2版本
一.背景介绍 公司最近的新项目在进行技术框架升级,基于的Spring Boot的版本是2.0.2,整合Redis数据库.网上基于2.X版本的整个Redis少之又少,中间踩了不少坑,特此把整合过程记录, ...
- Redis(五)整合:SpringBoot如何整合Redis?
前言 SpringBoot应该不用过多介绍了吧!是Spring当前最火的一个框架,既然学习了Redis,我们肯定是要在实际项目中使用,那么肯定首选整合SpringBoot啦! 简单介绍下SpringB ...
- 【笔记】Spring - Spring Data 整合:SpringBoot、Redis
相关 [笔记]Spring - Spring Data JPA - https://lawsssscat.blog.csdn.net/article/details/103466076 资料 hm s ...
最新文章
- LeetCode简单题之将句子排序
- 基于docker+gunicorn部署sanic项目
- linux syslogd 源码,syslogd 详解二
- hp compaq presarop v3009笔记本重新启动蓝屏!
- CentOS7中多台服务器配置SSH免密钥登录
- php 单元测试 麻烦,php – 正确的单元测试
- 课时18:函数:灵活即强大
- mysql相关命令操作
- java在win8闪退_解决Win8/Win8.1系统下的IE11闪退的六种方法
- python的语言风格(一)
- 一种表格数据比对的方法
- Vue.js实现文章评论和回复评论功能
- 计算机建立局域网共享,局域网两台电脑如何建立共享文件夹
- 互联网巨头常用词汇大全 每一个词都在改变世界
- SQL获取当前时间| 日期| SQL时间格式| SQL时间截取| getdate()用法
- 3dmax2014植树插件_3DsMax种树插件:ForestPack Pro v6.1.2 For 2015-2019 updated Libraries
- c语言打印数组中的汉字
- JDBC数据库操作工具类——JdbcUtils
- 中国传统艺术服饰:云肩nbsp;服装设计
- linux下查看cpu核数以及内存大小