Spring Data操作Redis詳解

來源:互聯網
上載者:User

標籤:訊息中介軟體   simple   lists   replica   nosql資料庫   color   sort   etop   void   

Spring Data操作Redis詳解

Redis是一種NOSQL資料庫,Key-Value形式對資料進行儲存,其中資料可以以記憶體形式存在,也可以持久化到檔案系統。Spring data對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)。

 

1. 系統配置,如果使用Maven進行開發,只需要在pom.xml檔案中添加如下配置。

<dependencies>    <dependency>        <groupId>org.springframework.data</groupId>        <artifactId>spring-data-redis</artifactId>        <version>1.8.1.RELEASE</version>    </dependency></dependencies>

 

為了方面起見可以將Spring Data模板配置成 bean 方便在直接使用的地方直接注入。

<bean id="jedisConnFactory"     class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"     p:use-pool="true"/><bean id="redisTemplate"     class="org.springframework.data.redis.core.RedisTemplate"     p:connection-factory-ref="jedisConnFactory"/>

 

2. Redis Template針對不同的需求分類封裝了如下操作。

opsForValue() - Operations for working with entries having simple valuesopsForList() - Operations for working with entries having list valuesopsForSet() - Operations for working with entries having set valuesopsForZSet() - Operations for working with entries having ZSet (sorted set) valuesopsForHash() - Operations for working with entries having hash valuesboundValueOps(K) - Operations for working with simple values bound to a given keyboundListOps(K) - Operations for working with list values bound to a given keyboundSetOps(K) - Operations for working with set values bound to a given keyboundZSet(K) - Operations for working with ZSet (sorted set) values bound to a given keyboundHashOps(K) - Operations for working with hash values bound to a given key

 

3. 典型操作樣本

3.1 Redis Template注入,可以直接模板注入,也可以以ops形式注入,如下樣本中對兩種方式都進行了說明。

public class Example {    // inject the actual template    @Autowired    private RedisTemplate<String, String> template;    // inject the template as ListOperations    // can also inject as Value, Set, ZSet, and HashOperations    @Resource(name="redisTemplate")    private ListOperations<String, String> listOps;    public void addLink(String userId, URL url) {        listOps.leftPush(userId, url.toExternalForm());        // or use template directly        template.boundListOps(userId).leftPush(url.toExternalForm());    }}

 

3.2 Bound系列操作樣本,Bound系列操作的優勢在於只需要綁定一次,然後可以進行一個系列的操作,代碼十分精鍊。

    BoundListOperations<String, Product> mangoOps = redis.boundListOps("solidmango");    Product popped = mangoOps.rightPop();    mangoOps.rightPush(product1);    mangoOps.rightPush(product2);    mangoOps.rightPush(product3);

 

3.3 Serializer配置樣本,通常情況下Key和Value都採用不同的方式進行持久化,如下樣本中Key使用String進行持久化,Value使用Jackson格式進行持久化。

@Beanpublic RedisTemplate<String, Cart> redisTemplate(RedisConnectionFactory rcf) {        RedisTemplate<String, Cart> redis =        new RedisTemplate<String, Cart>();        redis.setConnectionFactory(rcf);        redis.setKeySerializer(new StringRedisSerializer());        redis.setValueSerializer(        new Jackson2JsonRedisSerializer<Product>(Product.class));        return redis;}

 

總結
本文對Spring Data操作Redis的配置和開發方式進行了詳細的分析說明,配置部分給出了具體的配置方式,程式碼範例部分分三種情況給出了具體的解決方案,希望對大家有所協助。

Spring Data操作Redis詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.