1. 程式人生 > >SpringDataRedis基礎(1):RedisTemplate操作

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(); 

//操作hash;
(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、