SpringBoot集成Redis用法笔记
今天给大家整理一下SpringBoot集成Redis用法笔记,希望对大家能有所帮助!
一、Redis优点介绍
1、速度快
不需要等待磁盘的IO,在内存之间进行的数据存储和查询,速度非常快。当然,缓存的数据总量不能太大,因为受到物理内存空间大小的限制。
2、支持多种数据库类型
丰富的数据结构 除了string之外,还有list、hash、set、sortedset,一共五种类型。
3、单线程数据库
单线程,避免了线程切换和锁机制的性能消耗。
4、可持久化
支持RDB与AOF两种方式,将内存中的数据写入外部的物理存储设备。
5、支持发布/订阅。
6、支持Lua脚本。
7、支持分布式锁
在分布式系统中,如果不同的节点需要访同到一个资源,往往需要通过互斥机制来防止彼此干扰,并且保证数据的一致性。在这种情况下,需要使用到分布式锁。分布式锁和Java的锁用于实现不同线程之间的同步访问,原理上是类似的。
8、支持原子操作和事务Redis事务是一组命令的集合。
一个事务中的命令要么都执行,要么都不执行。如果命令在运行期间出现错误,不会自动回滚。
9、支持主从复制
支持主-从(Master-Slave)复制与高可用(Redis Sentinel)集群(3.0版本以上)
10、支持管道模式
支持管道Redis管道是指客户端可以将多个命令一次性发送到服务器,然后由服务器一次性返回所有结果。管道技术的优点是:在批量执行命令的应用场景中,可以大大减少网络传输的开销,提高性能。
11、支持多种编程语言
二、示例
1、下载redis
大家可以在官网下载 :https://redis.io/ ,有需要的话也可以留言直接发给大家。
然后启动redis。
2、引入依赖 pom.xml
<!--redis依赖配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
3、增加配置
redis:host: localhostdatabase: 0 port: 6379 password:jedis:pool:max-active: 8 max-wait: -1msmax-idle: 8 min-idle: 0 timeout: 3000ms
4、示例代码
package my.springboot.redis;
import my.springboot.redis.entity.UserDO;import my.springboot.redis.service.IUserInfoService;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.core.*;import org.springframework.test.context.junit4.SpringRunner;
import java.util.*;import java.util.concurrent.TimeUnit;/** * 测试UserInfo用法 **/@RunWith(SpringRunner.class)@SpringBootTestpublic class RedisTest {@Autowiredprivate RedisTemplate redisTemplate;/*ValueOperations:简单K - V操作 SetOperations:set类型数据操作 ZSetOperations:zset类型数据操作 HashOperations:针对map类型的数据操作 ListOperations:针对list类型的数据操作*/
@Testpublic void redisStrTest() { ValueOperations<String,Object> valueOperations = redisTemplate.opsForValue(); valueOperations.set("name1","小明"); valueOperations.set("name2","小李");System.out.println("删除前:"+valueOperations.get("name1"));redisTemplate.delete("name1");//设置name1 60秒 过期 redisTemplate.expire("name1",60, TimeUnit.SECONDS); System.out.println("删除后:"+valueOperations.get("name1")); UserDO user= new UserDO(); user.setId(1); user.setUserName("小明"); user.setPassword("123456"); valueOperations.set("user",user); UserDO user1= (UserDO) valueOperations.get("user");}@Testpublic void redisListTest() {ListOperations<String,List<String>> listOperations=redisTemplate.opsForList(); List<String> list=new ArrayList<>(); list.add("篮球"); list.add("足球"); listOperations.leftPushAll("list:str",list); List<String> ll=listOperations.range("list:str",0,-1).get(0);long size= listOperations.size("list:str");for (String item: ll ) { System.out.println(item); }// 移除操作 redisTemplate.delete("list:str"); List<String> aa=listOperations.leftPop("list:str"); System.out.println(listOperations.leftPop("list:str")); }@Testpublic void redisHashTest() { HashOperations<String,Object,UserDO> hashOperations = redisTemplate.opsForHash(); UserDO user= new UserDO(); user.setId(1); user.setUserName("小明"); user.setPassword("123456"); hashOperations.put("user:hash",user.hashCode()+"",user); System.out.println(hashOperations.get("user:hash",user.hashCode()+"").getUserName()); }@Testpublic void redisSettTest() { SetOperations<String,UserDO> sortOperations = redisTemplate.opsForSet(); UserDO user= new UserDO(); user.setId(1); user.setUserName("小明"); user.setPassword("123456");UserDO user1= new UserDO(); user1.setId(2); user1.setUserName("小张"); user1.setPassword("888888"); sortOperations.add("user:sort",user,user1); Set<UserDO> result = sortOperations.members("user:sort");for (UserDO item : result ) { System.out.println(item.getUserName());}redisTemplate.delete("user:sort"); System.out.println(result); }
@Testpublic void redisZSetTest() {redisTemplate.delete("ranking-list"); ZSetOperations<String,String> zsortOperations = redisTemplate.opsForZSet();//向集合中插入元素,并设置分数 zsortOperations.add("ranking-list", "小明", 80);//向集合中插入多个元素 DefaultTypedTuple<String> tuple1 = new DefaultTypedTuple<String>("小王", 100.0); DefaultTypedTuple<String> tuple2 = new DefaultTypedTuple<String>("小张", 90.0); zsortOperations.add("ranking-list", new HashSet<>(Arrays.asList(tuple1, tuple2)));System.out.println(zsortOperations.range("ranking-list",0,-1));}
}IT技术分享社区
个人博客网站:https://programmerblog.xyz文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识
SpringBoot集成Redis用法笔记相关推荐
- SpringBoot集成Mybatis用法笔记
今天给大家整理SpringBoot集成Mybatis用法笔记.希望对大家能有所帮助! 搭建一个SpringBoot基础项目. 具体可以参考SpringBoot:搭建第一个Web程序 引入相关依赖 &l ...
- SpringBoot集成Redis笔记-动力节点王鹤
关于springboot集成redis,我做了笔记,分享给小伙伴们,视频看的动力节点王鹤老师讲的, 动力节点王鹤老师讲解的springboot教程,由浅入深,带你体验Spring Boot的极速开发过 ...
- redis 依赖_springboot|springboot集成redis缓存
javaDEMO 本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https: ...
- springboot集成redis使用redis作为session报错ClassNotFoundException类RememberMeServices
springboot 集成redis使用redis作为缓存,会报错的问题. 错误信息: java.lang.IllegalStateException: Error processing condit ...
- SpringBoot集成Redis缓存
SpringBoot集成Redis缓存 前言 本系列文章将简单的学习SpringCloud微服务相关知识,其实也是因为时间的原因,一直拖到现在,遂打算趁着假期,决定记录下来. 从天气预报微服务系统的单 ...
- 关于springboot集成redis及关于redis的Key 乱码问题
一.在pom文件中引入redis <dependency><groupId>org.springframework.boot</groupId><artifa ...
- springboot 集成redis key乱码\xac\xed\x00\x05t\x00\x0eHAOKE_HOT_WORD
文章目录 场景 分析 解决 场景 springboot集成redis集群 检查key时发现key是二进制格式的 \xac\xed\x00\x05t\x00\x0eHAOKE_HOT_WORD 分析 R ...
- SpringBoot集成Redis并使用Knife4j测试
SpringBoot集成Redis并使用Knife4j测试 基于若依的ruoyi-vue前后端分离版本,若依官网:http://www.ruoyi.vip/ 项目目录结构 项目的目录结构如下: 1.新 ...
- Redis第三话 – Springboot集成Redis以及常用API和客户端介绍
本文主要记录在Springboot中集成Redis的使用. 1. springboot集成redis 1.1 maven配置 基于springboot 版本2.5.6,parent包就不贴了. < ...
最新文章
- 四肢切割_四肢瘫痪者用大脑信号和先进的假肢完成吃饭动作
- IT项目的面向对象分析设计、开发及管理
- GStreamer 入门 - Hello,World
- idea将本地项目推送至远程仓库(图形化版本01)
- 发掘商业潜力 戴尔第13代服务器升级带动企业能效升级
- php聊天系统文档,聊天后台管理系统接口文档
- hdu 3466 Proud Merchants
- 联想小新air13装双系统_联想小新 Air 13IBK Pro 安装黑苹果Windows双系统教程
- firefox 53支持java_火狐浏览器53.0版
- python模拟登陆steam
- 常用adb命令 主要针对车机硬件类用的多
- CPU,操作系统,应用软件,安装时的32位与64位区别收集总结
- 【读书笔记】《谈谈方法》(笛卡尔)
- 顺序表的初始化、插入、删除、查找
- 如何给自己的手机录制屏幕视频
- WebRTC音视频之噪音消除功能
- 密码学数学基础——群、环、域
- 人工智能导论-动物识别专家系统
- CK11,CK11N 成本估算数据读取
- 互联网黑话汇总大合集
热门文章
- 福布斯评科技未来五大趋势:电脑消失融入生活时间
- DM6446开发攻略:V4L2视频驱动和应用分析
- 运放搭建主动滤波电路
- 低功耗设计——基于UPF进行设计
- 数字后端——物理单元介绍
- opencv2.2.0源代码(include文件)分析
- ANSYS——命令流学习(材料属性设置、建模的命令流)
- 深度学习之pytorch(二) 数据并行
- java数据生成excel_Java 数据库数据生成Excel
- 【Leetcode】【Longest Palindromic Substring】【最长回文子串】【C++】