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及串口基础知识硬件:断路器、接触器、继电器基础知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tomcat和servlet的关系

tomcat和servlet的关系 Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器上的组件. Servlet最常见的用途是扩展Java Web服务器功能,提…

Linux常用远程连接工具介绍,总有一款适合你

目录 1、xshell 2、winscp 3、PuTTY 4、MobaXterm 5、FinalShell 今天给大家推荐Linux常用远程连接工具&#xff0c;希望对大家能有所帮助&#xff01; 1、xshell 介绍&#xff1a; xshell是一个非常强大的安全终端模拟软件&#xff0c;它支持SSH1, SSH2, 以及Windows平台的TEL…

Linux远程管理协议相关知识介绍

一、什么是远程管理远程管理&#xff0c;实际上就是计算机&#xff08;服务器&#xff09;之间通过网络进行数据传输&#xff08;信息交换&#xff09;的过程&#xff0c;与浏览器需要 HTTP 协议&#xff08;超文本传输协议&#xff09;浏览网页一样&#xff0c;远程管理同样需…

潜力的监控mysql_Grafana 数据库监控平台

Grafana 数据库监控平台简介Grafanademo 地址&#xff1a;官方demo文档可以下载pdf离线阅读Percona监控和管理(PMM)是一个用于管理和监控MySQL和MongoDB性能的开源平台。它由Percona与托管数据库服务&#xff0c;支持和咨询领域的专家合作开发。PMM是一种免费的开源解决方案&am…

PC软件:推荐七款Windows下宝藏软件

目录 一、uTools 效率神器 二、Groupy 窗口切换神器 三、Revo Uninstaller 卸载神器 四、Universal Viewer 五、VectorMagic 六、QuickLook 文件预览神器 七、Bandizip 压缩神器 今天给大家推荐七款Windows下软件&#xff0c;每一个都值得拥有。 一、uTools 效率神器 一个可以帮…

Linux计划任务(at,crontab)

在LINUX中&#xff0c;我们通过crontab和at这两个东西来实现 at&#xff1a;它是一个可以处理仅执行一次就结束的指令 crontab&#xff1a;它是会把你指定的工作或任务&#xff0c;比如&#xff1a;脚本等&#xff0c;按照你设定的周期一直循环执行下去 1.at计划任务的使用 语…

硬件:笔记本电脑7大分类总结,看完你就明白了

目录 游戏本 超极本 轻薄本 学生本 商务本 二合一电脑 上网本 今天给大家分享笔记本电脑7大场景分类&#xff0c;看完你就明白了&#xff01; 游戏本 游戏本最早由外星人和微星推出&#xff0c;在90年代就引起了众多游戏玩家的热捧。目前游戏本在笔记本电脑市场可谓是超级火爆&…

网路知识:为什么宽带越用越慢,看完你就明白了

目录 一、办理宽带的时候要问清楚宽带是不是独享的&#xff01; 二、定期重启路由器 三、定期检修宽带线路 四、出口光猫或路由器的问题 每个家庭都有安装宽带&#xff0c;但是仍然有不少人不知道宽带的基本常识&#xff0c;今天和大家一起来聊一聊。 首先宽带&#xff0c;是一…

设计模式---------门面模式

1.概念 提供一个统一的接口去访问多个子系统的多个不同的接口&#xff0c;它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。 本质&#xff1a;就是化零为整&#xff1b;引入一个中介类&#xff0c;把各个分散的功能组合成一个整体&#xff0c;只对外暴…

电脑技巧:推荐五款超级好用的电脑小众软件

目录 1、HoneyView 看图神器 2、PeaZip 压缩软件 3、Sandbox 沙盘工具 4、Seer 预览神器 5、flux 护眼神器 今天给大家推荐五款超级好用的电脑小众软件&#xff0c;希望对大家能够有所帮助&#xff01; 1、HoneyView 看图神器 HoneyView 看图软件&#xff0c;打开速度非常快&am…

java math round小数_Java——Math的round方法

代码如下&#xff0c;后面的注释是输出的结果public static voidmain(String[] args) {System.out.println(Math.round(0.399));//0System.out.println(Math.round(0.4));//0System.out.println(Math.round(0.41));//0System.out.println(Math.round(0.499));//0System.out.pri…

电脑软件:9款超级实用的办公软件

目录 一、Quicker 二、Eagle 三、FSCapture 四、图说 五、Lively Wallpaper 六、爱奇艺万能联播 七、Fliqlo 八、Folder Painter 九、7Zip 今天给大家分享9款超级实用的办公软件&#xff0c;值得收藏&#xff01; 一、Quicker 作为全网好评的这款国产软件&#xff0c;可以秒杀很…

20145231 《信息安全系统设计基础》期中总结

20145231 《信息安全系统设计基础》期中总结 教材学习内容复习 结合课本知识及再次实践加深理解记忆 按照学习时相关重点知识的顺序进行整理归纳 实践内容&#xff1a;重要命令的使用 gdb调试栈帧&#xff08;再理解&#xff09; makefile 编译运行代码深入理解局部性 Linux中的…

资源分享:分享5个冷门而超级实用的在线网站

目录 1、网站配色-Adobe color 1、YYDS电影 3、蓝调music 4、在线艺术图库 5、全景看世界 AirPano 1、网站配色-Adobe color 网站&#xff1a;https://color.adobe.com/zh/ 只需要在网上找到一张有你喜欢的颜色的任意图片或者照片&#xff0c;拖入网页&#xff0c;Adobe Color …

常用插件:分享12款超级好用的 Chrome 插件

1、dblock Plus&#xff1a;免除广告困扰你是不是每次搜索百度前几个都是广告&#xff1f;有了它&#xff0c;你的搜索结果只有纯净。2. 监听网络请求插件simple-extension插件让每个网站都可以保存/切换Cookies、切换User-Agent&#xff0c;简单地监听网络请求。地址&#xff…

IrregularGridCollectionView处理不定宽度的标签cell

IrregularGridCollectionView处理不定宽度的标签cell 效果 源码 https://github.com/YouXianMing/UI-Component-Collection 中的 IrregularGridCollectionView // // IrregularGridCollectionView.h // IrregularGridCollectionView // // Created by YouXianMing on 16/8/3…