SpringDataRedis基礎(1):RedisTemplate操作
1、RedisTemplate簡介
1.1、簡介
Spring封裝了RedisTemplate物件來進行對Redis的各種操作,它支援所有的Redis原生的api。RedisTemplate位於spring-data-redis包下,RedisTemplate原始碼類:
public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperations<K, V>, BeanClassLoaderAware { ............................ }
【注意ReidsTemplate中的K和V】:
(1)K:在RedisTemplate模板中的K的型別(通常為String);
(2)V:在RedisTemplate模板中的K的型別Redis value的型別;
(3)如果沒特殊情況,切勿定義成RedisTemplate<Object, Object>,否則根據里氏替換原則,使用的時候會造成型別錯誤。
1.2、RedisTemplate中的資料結構
【RedisTemplate中定義了五種資料結構操作】:
(1)redisTemplate.opsForValue(); //操作字串;
(2)redisTemplate.opsForHash();
(3)redisTemplate.opsForList();//操作list;
(4)redisTemplate.opsForSet();//操作set;
(5)redisTemplate.opsForZSet();//操作有序set;
【ReidsTemplate中的五種結構與java對比】:
(1)String:等同於java中的,Map<String,String>。
(2)list:等同於java中的Map<String,List<String>>。
(3)set:等同於java中的Map<String,Set<String>>。
(4)sort_set:可排序的set。
(5)hash:等同於java中的:`Map<String,Map<String,String>>。
1.3、BoundKeyOperations
提供了對key的“bound”(繫結)便捷化操作API,可以通過bound封裝指定的key,然後進行一系列的操作而無須“顯式”的再次指定Key,即BoundKeyOperations:
(1)BoundValueOperations對字串操作;
(2)BoundSetOperations對set操作;
(3)BoundListOperations;
(4)BoundZSetOperations;
(5)BoundHashOperations;
1.4、ReidsTemplate的序列化
針對資料的“序列化/反序列化”,提供了多種可選擇策略(RedisSerializer);當我們的資料存放到Reids的時候,鍵K和值V都是通過Spring提供的Serializer序列化到資料庫。ReidsTemplate預設使用的序列化是JdkSerializationRedisSerializer,而StringReidsTemplate的預設使用序列化是StringRedisSerializer。
(1)JdkSerializationRedisSerializer:POJO物件的存取場景,使用JDK本身序列化機制,將pojo類通過ObjectInputStream/ObjectOutputStream進行序列化操作,最終redis-server中將儲存位元組序列。是目前最常用的序列化策略。
(2)StringRedisSerializer:Key或者value為字串的場景,根據指定的charset對資料的位元組序列編碼成string,是“new String(bytes, charset)”和“string.getBytes(charset)”的直接封裝。是最輕量級和高效的策略。(3)JacksonJsonRedisSerializer:jackson-json工具提供了javabean與json之間的轉換能力,可以將pojo例項序列化成json格式儲存在redis中,也可以將json格式的資料轉換成pojo例項。因為jackson工具在序列化和反序列化時,需要明確指定Class型別,因此此策略封裝起來稍微複雜。【需要jackson-mapper-asl工具支援】
(4)OxmSerializer:提供了將javabean與xml之間的轉換能力,目前可用的三方支援包括jaxb,apache-xmlbeans;redis儲存的資料將是xml工具。不過使用此策略,程式設計將會有些難度,而且效率最低;不建議使用。【需要spring-oxm模組的支援】
【注意】如果你的資料需要被第三方工具解析,那麼資料應該使用StringRedisSerializer而不是JdkSerializationRedisSerializer。
1.5、Key的存活週期
2、RedisTemplate操作
2.1、基本配置資訊
【pom檔案】
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
【application.yml檔案配置】
spring:
redis:
host: 192.168.2.10 #redis主機
port: 6379 #預設連線埠為6379
password: #預設密碼為空
database: 0 #預設redis資料庫為db0
2.2、