日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redisson--------基础入门

發(fā)布時間:2025/3/15 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redisson--------基础入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、前言

之前用的Redis,都是用的原生的RedisTempale或者是StringRedisTemplate,各種API非常的難易記憶,每次用的時候還得去網(wǎng)上查詢API文檔,而Redisson的宗旨是促進使用者對Redis的關注分離(Separation of Concern),從而讓使用者能夠將精力更集中地放在處理業(yè)務邏輯上。這里放上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中配置。官方文檔給出了基于配置類和基于配置文件的形式,還有基于集群,基于主從,基于單節(jié)點模式的配置方式都不一樣,我這里給出基于配置文件的單節(jié)點模式,其他形式參考官方文檔。
  • redisson.yml文件
  • singleServerConfig:idleConnectionTimeout: 10000 #連接空閑超時,單位:毫秒 默認:10000connectTimeout: 10000 #連接超時,單位:毫秒。默認:10000timeout: 3000 #命令等待超時,單位:毫秒 默認:3000retryAttempts: 3 #命令失敗重試次數(shù)retryInterval: 1500 #命令重試發(fā)送時間間隔,單位:毫秒# lockWatchdogTimeout: 30000 #監(jiān)控鎖的看門狗超時,單位:毫秒 該參數(shù)只適用于分布式鎖的加鎖請求中未明確使用leaseTimeout參數(shù)的情況。如果該看門口未使用lockWatchdogTimeout去重新調整一個分布式鎖的lockWatchdogTimeout超時,那么這個鎖將變?yōu)槭顟B(tài)。這個參數(shù)可以用來避免由Redisson客戶端節(jié)點宕機或其他原因造成死鎖的情況。password: nullclientName: null #客戶端名稱subscriptionsPerConnection: 5 #單個連接最大訂閱數(shù)量address: "redis://xxx.xxx.xxx.xxx:6379"subscriptionConnectionMinimumIdleSize: 1 #從節(jié)點發(fā)布和訂閱連接的最小空閑連接數(shù)subscriptionConnectionPoolSize: 50 #從節(jié)點發(fā)布和訂閱連接池大小# 集群模式下不支持該選項database: 2dnsMonitoringInterval: 5000 #DNS監(jiān)控間隔,單位:毫秒 在啟用該功能以后,Redisson將會監(jiān)測DNS的變化情況sslEnableEndpointIdentification: true #啟用SSL終端識別,默認為true threads: 0 #線程池數(shù)量 默認值: 當前處理核數(shù)量 * 2 nettyThreads: 0 #Netty線程池數(shù)量 默認值: 當前處理核數(shù)量 * 2 ,這個線程池數(shù)量是在一個Redisson實例內,被其創(chuàng)建的所有分布式數(shù)據(jù)類型和服務,以及底層客戶端所一同共享的線程池里保存的線程數(shù)量。 codec: #編碼 默認值:org.redisson.codec.JsonJacksonCodec,Redisson的對象編碼類是用于將對象進行序列化和反序列化,以實現(xiàn)對該對象在Redis里的讀取和存儲!<org.redisson.codec.JsonJacksonCodec> {} "transportMode": #傳輸模式 默認:TransportMode.NIO linux系統(tǒng)下可以使用RPOLL,性能高"NIO"
  • 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數(shù)據(jù)實例。Redisson的分布式RBucket對象是一種通用對象桶可以用來存放任類型的對象。先來寫新增和查詢。先通過redisson對象通過getBucket方法,在Redis中創(chuàng)建一個字符串類型的對象。這個對象的引用就是下面的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--------基础入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。