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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

redis缓存路由为空_Springboot使用RedisTemplate优雅地操作redis

發布時間:2025/3/19 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis缓存路由为空_Springboot使用RedisTemplate优雅地操作redis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:Jantihttp://cnblogs.com/superfj/p/9232482.html

概述

本文內容主要

  • 關于spring-redis
  • 關于redis的key設計
  • redis的基本數據結構
  • 介紹redis與springboot的整合
  • sringboot中的redistemplate的使用

關于spring-redis

spring-data-redis針對jedis提供了如下功能:

1.連接池自動管理,提供了一個高度封裝的“RedisTemplate”類

2.針對jedis客戶端中大量api進行了歸類封裝,將同一類型操作封裝為operation接口

  • ValueOperations:簡單K-V操作
  • SetOperations:set類型數據操作
  • ZSetOperations:zset類型數據操作
  • HashOperations:針對map類型的數據操作
  • ListOperations:針對list類型的數據操作

3.提供了對key的“bound”(綁定)便捷化操作API,可以通過bound封裝指定的key,然后進行一系列的操作而無須“顯式”的再次指定Key,即BoundKeyOperations:

  • BoundValueOperations
  • BoundSetOperations
  • BoundListOperations
  • BoundSetOperations
  • BoundHashOperations

4.將事務操作封裝,有容器控制。

5.針對數據的“序列化/反序列化”,提供了多種可選擇策略(RedisSerializer)

JdkSerializationRedisSerializer:POJO對象的存取場景,使用JDK本身序列化機制,將pojo類通過ObjectInputStream/ObjectOutputStream進行序列化操作,最終redis-server中將存儲字節序列。是目前最常用的序列化策略。

StringRedisSerializer:Key或者value為字符串的場景,根據指定的charset對數據的字節序列編碼成string,是“new String(bytes, charset)”和“string.getBytes(charset)”的直接封裝。是最輕量級和高效的策略。

JacksonJsonRedisSerializer:jackson-json工具提供了javabean與json之間的轉換能力,可以將pojo實例序列化成json格式存儲在redis中,也可以將json格式的數據轉換成pojo實例。因為jackson工具在序列化和反序列化時,需要明確指定Class類型,因此此策略封裝起來稍微復雜。【需要jackson-mapper-asl工具支持】

OxmSerializer:提供了將javabean與xml之間的轉換能力,目前可用的三方支持包括jaxb,apache-xmlbeans;redis存儲的數據將是xml工具。不過使用此策略,編程將會有些難度,而且效率最低;不建議使用。【需要spring-oxm模塊的支持】

如果你的數據需要被第三方工具解析,那么數據應該使用StringRedisSerializer而不是JdkSerializationRedisSerializer。

關于key的設計

key的存活時間:

無論什么時候,只要有可能就利用key超時的優勢。一個很好的例子就是儲存一些諸如臨時認證key之類的東西。當你去查找一個授權key時——以OAUTH為例——通常會得到一個超時時間。

這樣在設置key的時候,設成同樣的超時時間,Redis就會自動為你清除。

關系型數據庫的redis

1: 把表名轉換為key前綴 如, tag:
2: 第2段放置用于區分區key的字段--對應mysql中的主鍵的列名,如userid
3: 第3段放置主鍵值,如2,3,4…., a , b ,c
4: 第4段,寫要存儲的列名
例:user:userid:9:username


Redis的數據類型

String字符串

  • string是redis最基本的類型,一個key對應一個value。
  • string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。
  • string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。

String類型的操作參考:

http://www.runoob.com/redis/redis-strings.html

鏈表

  • redis列表是簡單的字符串列表,排序為插入的順序。列表的最大長度為2^32-1。
  • redis的列表是使用鏈表實現的,這意味著,即使列表中有上百萬個元素,增加一個元素到列表的頭部或尾部的操作都是在常量的時間完成。
  • 可以用列表獲取最新的內容(像帖子,微博等),用ltrim很容易就會獲取最新的內容,并移除舊的內容。
  • 用列表可以實現生產者消費者模式,生產者調用lpush添加項到列表中,消費者調用rpop從列表中提取,如果沒有元素,則輪詢去獲取,或者使用brpop等待生產者添加項到列表中。

List類型的操作參考:

http://www.runoob.com/redis/redis-lists.html

集合

  • redis集合是無序的字符串集合,集合中的值是唯一的,無序的。可以對集合執行很多操作,例如,測試元素是否存在,對多個集合執行交集、并集和差集等等。
  • 我們通常可以用集合存儲一些無關順序的,表達對象間關系的數據,例如用戶的角色,可以用sismember很容易就判斷用戶是否擁有某個角色。
  • 在一些用到隨機值的場合是非常適合的,可以用 srandmember/spop 獲取/彈出一個隨機元素。同時,使用@EnableCaching開啟聲明式緩存支持,這樣就可以使用基于注解的緩存技術。注解緩存是一個對緩存使用的抽象,通過在代碼中添加下面的一些注解,達到緩存的效果。

Set類型的操作參考:

http://www.runoob.com/redis/redis-sets.html

ZSet 有序集合

  • 有序集合由唯一的,不重復的字符串元素組成。有序集合中的每個元素都關聯了一個浮點值,稱為分數。可以把有序看成hash和集合的混合體,分數即為hash的key。
  • 有序集合中的元素是按序存儲的,不是請求時才排序的。

ZSet類型的操作類型

http://www.runoob.com/redis/redis-sorted-sets.html

Hash-哈希

  • redis的哈希值是字符串字段和字符串之間的映射,是表示對象的完美數據類型。
  • 哈希中的字段數量沒有限制,所以可以在你的應用程序以不同的方式來使用哈希。

Hash類型的操作參考:

http://www.runoob.com/redis/redis-hashes.html

springboot 與redis的整合

pom文件

依賴如下:

<

application.properties

#

redisTemplate的配置

新建一個redisConfig類,進行相關bean的配置:

package

spring-redis中使用了RedisTemplate來進行redis的操作,通過泛型的K和V設置鍵值對的對象類型。這里使用了string作為key的對象類型,值為Object。

對于Object,spring-redis默認使用了jdk自帶的序列化,不推薦使用默認了。所以使用了json的序列化方式

對spring-redis對redis的五種數據類型也有支持

HashOperations:對hash類型的數據操作
ValueOperations:對redis字符串類型數據操作
ListOperations:對鏈表類型的數據操作
SetOperations:對無序集合類型的數據操作
ZSetOperations:對有序集合類型的數據操作

redis操作的工具類

package

redis的key工具類

package

如何使用?

測試代碼

新建一個實體類:

package

再新建一個測試類:

package

注解緩存的使用

@Cacheable:在方法執行前Spring先查看緩存中是否有數據,如果有數據,則直接返回緩存數據;沒有則調用方法并將方法返回值放進緩存。

@CachePut:將方法的返回值放到緩存中。

@CacheEvict:刪除緩存中的數據。

本文代碼

https://github.com/JayTange/springbootRedis.git

參考

https://www.cnblogs.com/chiangchou/p/7748009.htmlhttp://www.cnblogs.com/chiangchou/p/redis-1.html

推薦閱讀

1. SpringBoot 整合篇

2. 手寫一套迷你版HTTP服務器

3. 記住:永遠不要在MySQL中使用UTF-8

4. Springboot啟動原理解析

總結

以上是生活随笔為你收集整理的redis缓存路由为空_Springboot使用RedisTemplate优雅地操作redis的全部內容,希望文章能夠幫你解決所遇到的問題。

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