SpringBoot - 第二十二章 | Redis的集成和使用(一)
Spring Boot中除了對常用的關係型資料庫提供了優秀的自動化支持之外,對於很多NoSQL資料庫一樣提供了自動化配置的支持,包括:Redis, MongoDB, Elasticsearch, Solr和Cassandra。
Redis介紹
Redis 是一個開源(BSD許可)的,內存中的資料結構存儲系統,它可以用作資料庫、緩存和消息中間件。它支持多種類型的資料結構,如字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 與範圍查詢, bitmaps, hyperloglogs 和地理空間( geospatial) 索引半徑查詢。 Redis 內置了複製(replication),LUA腳本(Lua scripting), LRU驅動事件(LRU eviction),事務(transactions) 和不同級別的磁盤持久化(persistence), 並通過Redis哨兵(Sentinel)和自動分區(Cluster )提供高可用性(high availability)。
Redis官方
Redis中文社區
Redis命令大全
Redis使用內存計算器
Docker Redis準備
1 | docker run --name myredis -p 6379:6379 -d redis:3.2 redis-server --appendonly yes |
命令說明:
1 | --name myredis:容器取名為myredis |
相關配置
Spring Boot提供的資料訪問框架Spring Data Redis基於Jedis。可以通過引入spring-boot-starter-redis來配置依賴關係。
加入pom的依賴
1 | <dependency> |
參數配置
在src/main/resources/application.properties中配置Redis服務端訊息
1 | # REDIS (RedisProperties) |
注意:spring.redis.timeout不能設定太短或是0,會因為Timeout時間過短報錯(org.springframework.dao.QueryTimeoutException: Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out after 10 millisecond(s) at)
配置自動加載類為:org.springframework.boot.autoconfigure.data.redis.RedisProperties,可在屬性文件中點擊某屬性快捷跳轉。注意到其啟動類為org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration。
其中spring.redis.database的配置通常使用0即可,Redis在配置的時候可以設置資料庫數量,預設為16,可以理解為資料庫的schema。
測試
撰寫測試
測試結果
我們可以透過Redis-cli指令去查詢看這個是否有寫入
測試案例演示如何通過自動配置的StringRedisTemplate對象進行Redis的讀寫操作,該對像從命名中就可注意到支持的是String類型。有使用過spring-data-redis的一定熟悉RedisTemplate<K, V>接口,StringRedisTemplate就相當於RedisTemplate<String, String>的實作。
除了String類型,開發中我們還經常會在Redis中存儲對象,這時候我們就會想是否可以使用類似RedisTemplate<String, Customer>來初始化並進行操作。但是Spring Boot並不支持直接使用,需要我們自己實作RedisSerializer接口來對傳入對象進行序列化和反序列化,後面文章將會通過一個實例來完成對象的讀寫操作。
註:以上參考了
oKong 的 SpringBoot | 第十一章:Redis的集成和简单使用文章。
程序猿DD-翟永超 的 Spring Boot中使用Redis数据库 文章。