詳解SpringData操作Redis數(shù)據(jù)庫

redis是一種NoSql數(shù)據(jù)庫,Key-Value形式對數(shù)據(jù)進行存儲,其中數(shù)據(jù)可以以內(nèi)存形式存在,也可以持久化到文件系統(tǒng)。Spring data對Redis進行了很好的封裝,用起來也是十分的得心應(yīng)手。Redis 是一個開源(BSD許可)的,內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息中間件。 它支持多種類型的數(shù)據(jù)結(jié)構(gòu),如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 與范圍查詢, bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢。 Redis 內(nèi)置了 復(fù)制(replication),LUA腳本(Lua scripting), LRU驅(qū)動事件(LRU eviction),事務(wù)(transactions) 和不同級別的 磁盤持久化(persistence), 并通過 Redis哨兵(Sentinel)和自動 分區(qū)(Cluster)提供高可用性(high availability)。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供賓縣網(wǎng)站建設(shè)、賓縣做網(wǎng)站、賓縣網(wǎng)站設(shè)計、賓縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、賓縣企業(yè)網(wǎng)站模板建站服務(wù),十余年賓縣做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

1. 系統(tǒng)配置,如果使用Maven進行開發(fā),只需要在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 values
opsForList() - Operations for working with entries having list values
opsForSet() - Operations for working with entries having set values
opsForZSet() - Operations for working with entries having ZSet (sorted set) values
opsForHash() - Operations for working with entries having hash values
boundValueOps(K) - Operations for working with simple values bound to a given key
boundListOps(K) - Operations for working with list values bound to a given key
boundSetOps(K) - Operations for working with set values bound to a given key
boundZSet(K) - Operations for working with ZSet (sorted set) values bound to a given key
boundHashOps(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系列操作的優(yōu)勢在于只需要綁定一次,然后可以進行一個系列的操作,代碼十分精煉。

 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格式進行持久化。

@Bean
public 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;
}

總結(jié)

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

本文題目:詳解SpringData操作Redis數(shù)據(jù)庫
文章鏈接:http://bm7419.com/article8/jdsiip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、域名注冊、商城網(wǎng)站、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)