一、前言

之前用的Redis,都是用的原生的RedisTempale或者是StringRedisTemplate,各种API非常的难易记忆,每次用的时候还得去网上查询API文档,而Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。这里放上redisson的github链接,先说明,redisson除了开源版本,还有付费的pro版本,以后介绍的某些高级功能,如果是pro版本的,会标出

二、在SpringBoot中快速集成

Redisson是建立在Redis的基础之上的,所以需要在SpringBoot项目中引入Redis。

  • 导入依赖
<!--starter形式-->
<!-- https://mvnrepository.com/artifact/org.redisson/redisson-spring-boot-starter -->
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.3</version>
</dependency>-----------------------------------------------------------------
<!--标准形式-->
<!-- https://mvnrepository.com/artifact/org.redisson/redisson -->
<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.3</version>
</dependency>
  • 在SpringBoot中配置。官方文档给出了基于配置类和基于配置文件的形式,还有基于集群,基于主从,基于单节点模式的配置方式都不一样,我这里给出基于配置文件的单节点模式,其他形式参考官方文档。
  1. redisson.yml文件
singleServerConfig:idleConnectionTimeout: 10000  #连接空闲超时,单位:毫秒 默认:10000connectTimeout: 10000  #连接超时,单位:毫秒。默认:10000timeout: 3000 #命令等待超时,单位:毫秒 默认:3000retryAttempts: 3 #命令失败重试次数retryInterval: 1500 #命令重试发送时间间隔,单位:毫秒# lockWatchdogTimeout: 30000 #监控锁的看门狗超时,单位:毫秒  该参数只适用于分布式锁的加锁请求中未明确使用leaseTimeout参数的情况。如果该看门口未使用lockWatchdogTimeout去重新调整一个分布式锁的lockWatchdogTimeout超时,那么这个锁将变为失效状态。这个参数可以用来避免由Redisson客户端节点宕机或其他原因造成死锁的情况。password: nullclientName: null #客户端名称subscriptionsPerConnection: 5 #单个连接最大订阅数量address: "redis://xxx.xxx.xxx.xxx:6379"subscriptionConnectionMinimumIdleSize: 1 #从节点发布和订阅连接的最小空闲连接数subscriptionConnectionPoolSize: 50 #从节点发布和订阅连接池大小# 集群模式下不支持该选项database: 2dnsMonitoringInterval: 5000 #DNS监控间隔,单位:毫秒 在启用该功能以后,Redisson将会监测DNS的变化情况sslEnableEndpointIdentification: true #启用SSL终端识别,默认为true
threads: 0 #线程池数量 默认值: 当前处理核数量 * 2
nettyThreads: 0 #Netty线程池数量 默认值: 当前处理核数量 * 2 ,这个线程池数量是在一个Redisson实例内,被其创建的所有分布式数据类型和服务,以及底层客户端所一同共享的线程池里保存的线程数量。
codec: #编码 默认值:org.redisson.codec.JsonJacksonCodec,Redisson的对象编码类是用于将对象进行序列化和反序列化,以实现对该对象在Redis里的读取和存储!<org.redisson.codec.JsonJacksonCodec> {}
"transportMode": #传输模式 默认:TransportMode.NIO linux系统下可以使用RPOLL,性能高"NIO"
  1. RedisConfig
@Configuration
public class RedissonConfig {@Bean(destroyMethod="shutdown")public RedissonClient getRedissonClient() throws IOException {ResourceLoader loader = new DefaultResourceLoader();Resource resource = loader.getResource("redisson.yml");Config config = Config.fromYAML(resource.getInputStream());return Redisson.create(config);}
}

三、增删改查操作

每个Redisson对象实例都会有一个与之对应的Redis数据实例。Redisson的分布式RBucket对象是一种通用对象桶可以用来存放任类型的对象。先来写新增和查询。先通过redisson对象通过getBucket方法,在Redis中创建一个字符串类型的对象。这个对象的引用就是下面的bucket,它可以存放任意的Cityr对象实体。RBucket桶的神奇功能是:可直接存储City对象,省略了我们的City对象转为JSON字符串的过程。RBucket对象可以视为Redis中的 String类型,每个RBucket对象对应着一个值

  • 新增:将City对象通过RBucket存放到Redis中。
  • 查询的时候,通过KEY找到桶。再通过get() 方法取出缓存在Redis中的 指定的KEY的VALUE。
  • 修改就是通过KEY找到这个桶RBucket,然后重新SET一下。
  • 删除更简单了,找到这个桶,调用delete相关方法即可。
@Controller
@RequestMapping("redisson")
public class RedissonController {@AutowiredRedissonClient redissonClient;@ResponseBody@GetMapping("get/{id}")public City get(@PathVariable Long id){RBucket<City> city = redissonClient.getBucket("city"+id.toString());return city.get();}@ResponseBody@DeleteMapping("delete/{id}")public String delete(@PathVariable Long id){RBucket<City> bucket = redissonClient.getBucket("city" + id.toString());Optional<City> optionalCity=Optional.ofNullable(bucket.getAndDelete());return optionalCity.toString();}@ResponseBody@PutMapping("update")public String update(@RequestBody City city){RBucket<City> bucket = redissonClient.getBucket("city"+city.getId().toString());//更新缓存if (bucket!=null){bucket.set(city);return "ok";}else return "error";}@ResponseBody@PostMapping("add")public String add(@RequestBody City city){RBucket<City> bucket = redissonClient.getBucket("city"+city.getId().toString());try {bucket.set(city);return "ok";} catch (Exception e) {e.printStackTrace();return "error";}}
}

Redisson--------基础入门相关推荐

  1. 用python循环语句求素数_Python基础入门_3条件语句和迭代循环

    Python 基础入门前两篇: Python 基础入门--简介和环境配置 Python基础入门_2基础语法和变量类型 这是第三篇内容,主要简单介绍条件语句和迭代循环语句,内容也比较简单,目录如下: 条 ...

  2. MAYA 2022基础入门学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.41 GB |时长:4.5小时 包含 ...

  3. Blender 3.0基础入门学习教程 Introduction to Blender 3.0

    成为Blender通才,通过这个基于项目的循序渐进课程学习所有主题的基础知识. 你会学到什么 教程获取:Blender 3.0基础入门学习教程 Introduction to Blender 3.0- ...

  4. 三维地形制作软件 World Machine 基础入门学习教程

    <World Machine课程>涵盖了你需要的一切,让你有一个坚实的基础来构建自己的高质量的电影或视频游戏地形. 你会学到什么 为渲染或游戏开发创建高分辨率.高细节的地形. 基于Worl ...

  5. SketchUp Pro 2021基础入门学习视频教程

    SketchUp Pro 2021基础入门学习视频教程 1280X720 MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 流派:电子学习|语言:英语+中文字幕( ...

  6. Maya基础入门学习教程

    Maya基础入门学习教程 视频:.MKV, 1280x720, 共57节课 时长 4小时25分钟,3GB 语言:英语+中文字幕(根据原英文字幕机译更准确)+原英文字幕 指导老师:Shane Whitt ...

  7. Maya2022基础入门学习教程

    Maya2022基础入门学习教程 Maya 2022 Essential Training Maya2022基础入门学习教程 Maya 2022 Essential Training MP4 |视频: ...

  8. Blender基础入门学习教程 Learning Blender from Scratch

    Blender基础入门学习教程 Learning Blender from Scratch 流派:电子学习| MP4 |视频:h264,1280×720 |音频:aac,48000 Hz 语言:英语+ ...

  9. json vue 对象转数组_vue 基础入门(一)修改

    vue基础入门(一) 1. 什么是vue Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标 ...

  10. python 二进制流转图片_Python零基础入门到精通-5.1节:Python程序的执行过程

    教程引言: 系统地讲解计算机基础知识,Python的基础知识, 高级知识,web开发框架,爬虫开发,数据结构与算法,nginx, 系统架构.一步步地帮助你从入门到就业. 5.1.1 在命令行中执行Py ...

最新文章

  1. ControlButton按钮事件
  2. Amber16和AmberTools16在CentOS 7下GPU加速版的安装
  3. 124. Binary Tree Maximum Path Sum
  4. PHP显示今天、今月、上月、今年的起点/终点时间戳
  5. Shell的一些基本用法
  6. [转]基于overlayfs的硬盘资源隔离工具troot
  7. jquery显示和隐藏元素
  8. python实现web服务器_python实现静态web服务器
  9. 介绍一个被称为十一边形战士的强大模型
  10. 选用什么的域名后缀好
  11. 求旋转中心【halcon定位】
  12. 嵌入式系统开发-麦子学院(11)——ARM Cortex A8 硬件基础(1)
  13. php双线切换线路,双线双路和断线自动切换
  14. An improved genetic algorithm for the flexible job shop scheduling problem with multiple time constr
  15. 一、微信小程序拼团项目简介
  16. 050 XSS通关小游戏——xss challenge
  17. PCDATA和CDATA区别
  18. 关于AckerMan函数
  19. 社交网络里的高级钓鱼攻击
  20. 【css】LCD液晶字体——自定义字体@font-face

热门文章

  1. Kotlin学习笔记-----函数的定义
  2. golang错误处理(实验楼)
  3. SCU3033 Destroying a Painting(最小费用最大流)
  4. 【学习笔记】【C语言】返回指针的函数
  5. 国内油价今日将迎九连跌 出租车燃油费望调整
  6. Android文件系统的结构
  7. 【Demo 0062】目录及文件基本操作
  8. XP与Ubuntu双系统的问题
  9. 生成模型和判别模型对比
  10. UEFI主板GPT方式安装CentOS 6.4