1. 程式人生 > >redis 與 spring整合 hash 增刪改操作 list增刪改操作

redis 與 spring整合 hash 增刪改操作 list增刪改操作

對於以前redis的學習是非常痛苦的!近期將以前的東西撿起來。以部落格的形式儲存,以便於以後快速撿起來,並和廣大同胞一起分享!

1):簡單介紹

redis 是基於C語言開發。

redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set --有序集合)和hash(雜湊型別)。

redis 是一個 快取資料庫(片面的理解) 既可以做快取,也可以將資料持久化到磁碟中!

本人有通過redis的hash資料型別來做過購物車

spring配置檔案 spring-redis.xml

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
          <property name="maxIdle" value="6"></property>
          <property name="minEvictableIdleTimeMillis" value="300000"></property>
          <property name="numTestsPerEvictionRun" value="3"></property>
          <property name="timeBetweenEvictionRunsMillis" value="60000"></property>
     </bean>


 
     <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
          <property name="poolConfig" ref="jedisPoolConfig"></property>
          <property name="hostName" value="***.***.**.**"></property> 《更改ip》
          <property name="port" value="6379"></property> 《更改 埠號》
          <property name="timeout" value="15000"></property>
          <property name="usePool" value="true"></property>
     </bean>
     <bean id="jedisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
          <property name="connectionFactory" ref="jedisConnectionFactory"></property>
          <property name="keySerializer">
                   <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
          </property>
          <property name="valueSerializer">
                   <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
          </property>
     </bean>

hash資料結構圖

簡單介紹一下:

   注入redis資料來源:  
   

  hash的操作方法

(1):獲得hash資料型別的模板

   //獲得redis快取HASH資料型別(雜湊)
        HashOperations opsForHash = redisTemplate.opsForHash();

(2):通過 會員id 和 商品 id 得到商品資訊

    //判斷該使用者(的商品)在快取中有沒有該資料     hkey需為string型別
        Order cacheOrder = (Order) opsForHash.get(order.getMemberId() + ""

, order.getGoodsId());

(3):存入資訊 ,

  //根據會員ID 以及  商品 ID 將資料存入快取中 【opsForHash.put(key, hashKey, value);】value為object型別
      opsForHash.put(order.getMemberId() + "", order.getGoodsId(), goodsOrder);

(4):修改商品庫存(修改的原則是先對 value 數值進行修改  在將修改後的數值存入快取中  會覆蓋原來的快取資訊 )

  //判斷該使用者(的商品)在快取中有沒有該資料       【先修改數值】
      Order cacheOrder = (Order) opsForHash.get(order.getMemberId() + "", order.getGoodsId());

  //更新修改後的快取資料
      opsForHash.put(order.getMemberId() + "", order.getGoodsId(), cacheOrder);

(5):刪除快取資料  【不過一般不會直接刪除,只會做邏輯刪除】

  opsForHash.delete(key, hashKeys);

簡單演示一下list的幾種方法:

(1):獲得list數型別

  //獲得redis快取list資料型別
        ListOperations opsForList = redisTemplate.opsForList();

(2):根據鍵名獲得長度

  Long size = opsForList.size(order.getMemberId() + "");

(3):新增資訊

   //將購物資訊新增到快取中 rightPush 依次有右邊新增  leftPush依次由左邊新增
         opsForList.rightPush(order.getMemberId() +"" ,cacheOrder);

(4):獲得list集合 【 0 ,-1 代表所有值】

    //獲得所有當前可以的所有資訊
          List<Order> range = opsForList.range(order.getMemberId() +"”, 0, -1);

  llist資料型別適合於訊息佇列的場景:比如12306併發量太高,而同一時間段內只能處理指定數量的訂單!必須滿足先進先出的原則,其餘訂單處於等待 

  redis事務  :原子性,即 要不全部成功 要不全部失敗

  redis持久化 :rdb           aof

  RDB方式:

  RDB持久化預設生成的檔名為dump.rdb

  Redis.conf中可以配置,預設配置如下:【預設是開啟RDB方式的】

  save 900 1
  save 300 10
  save 60 10000

  以上表示的意思是,【 滿足任一條件 , 都會進行持久化 】

  900秒之內對服務進行了至少一次修改

  300秒之內伺服器進行了至少10次修改

  60秒之內對伺服器進行了至少10000次修改。

  AOF方式:

  appendonly yes              #啟用aof持久化方式
 # appendfsync always     #每次收到寫命令就立即強制寫入磁碟,最慢的,但是保證完全的持久化,不推薦使用
 
appendfsync everysec     #每秒鐘強制寫入磁碟一次,在效能和持久化方面做了很好的折中,推薦
 # appendfsync no          #完全依賴os,效能最好,持久化沒保證
 

來處:http://www.cnblogs.com/zhao-blog/p/6105227.html

相關推薦

redis spring整合 hash 刪改操作 list刪改操作

對於以前redis的學習是非常痛苦的!近期將以前的東西撿起來。以部落格的形式儲存,以便於以後快速撿起來,並和廣大同胞一起分享! 1):簡單介紹 redis 是基於C語言開發。 redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相

redisspring整合·

odi pro classpath sch isp stack exception tst 阻塞 配置spring配置文件applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <bea

Redis的叢集搭建Redisspring整合

叢集: 高可用,滿足高併發, 把資料分佈在不同的節點上,提高單個節點的效能 1.redis叢集 架構細節: (1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進位制協議優化傳輸

redisspring整合--不使用spring-data-redis

個人感覺如果使用spring-data-redis只作為快取的話有點累贅,所以有了以下方式 之前在網上搜索了一些資料,但是其中的配置總是報錯,原因是JedisShardInfo類缺少相應的構造方法...... 1.redis.xml配置 spring的配置檔案 <?

Redis對字串、Hash(物件)、列表(List)處理的操作命令

引數說明 在windows下 redis.windows.conf 配置項說明如下: 1. Redis預設不是以守護程序的方式執行,可以通過該配置項修改,使用yes啟用守護程序     daemonize no 2. 當Redis以守護程序方式執行時,Redis預

quartzspring整合實現動態任務刪改

本文最初是為了實現定時推送功能,為推送設定一個時間,到時間後推送到雲巴伺服器。 所以這裡會用到quartz定時任務排程,而且我新增一個定時推送,同時就要新增一個定時任務。所以這裡也涉及到了任務的增刪改查。 以下是程式碼實現: 1、定時任務管理類,實現對任務的CURD pa

一種古老的技術:axis1.4操作WebService,實現Spring整合

這是pom檔案中需要的axis需要的依賴 <dependency> <groupId>org.springframework</groupId> <artifactId>spr

基於哨兵【sentinel】模式的redis服務叢集並spring整合

       最近接手了一個PHP老專案,裡面用到了redis快取,基於sentinel模式的叢集。專案裡面redis的連線讀寫都是用PHP實現的,並把不同的資訊儲存於不同的dbindex下,即分db儲存內容。看了下,由於本人是搞Java的,決定用Java進行重構。於是就進

redisspring的完全整合

下載spring-data-redis,gav如下: <dependency> <groupId>org.springframework.data</groupId> <artifa

MybatisSpring整合(一)Mapper介面代理的方式操作SQL語句

一、建立maven工程 建立一個普通的maven工程,基於web 專案目錄: 二、建立資料庫與表 DROP TABLE IF EXISTS `books`; CREATE TABLE `books` ( `id` int(11) NOT NULL AUTO_I

Mybatis中Mapper代理形式開發spring整合

can sna 修改 jar xid oca pac user cal 1.導入jar包 2.分包 cogfig:存放配置文件 mapper:存放映射與接口 pojo:存放實體類 test:測試代碼 3.編寫配置文件 SqlMapConfig.xml <?

mybatisspring整合

fig bsp 切面 業務 開啟 per cep ret ever 1.Spring同mybatis的整合步驟? DataSource(主要提供的數據源) 整合SqlSe

Apache shiro的簡單介紹使用(spring整合使用)

簡單介紹 ace .cn album spring 整合 amp 介紹 pri http://pic.cnhubei.com/space.php?uid=1774&do=album&id=1343605http://pic.cnhubei.com/space

SpringMVC系列(十五)Spring MVCSpring整合時實例被創建兩次的解決方案以及Spring 的 IOC 容器和 SpringMVC 的 IOC 容器的關系

問題 nbsp frame ota 展示 not als pri exc 一、Spring MVC與Spring整合時實例被創建兩次的解決方案 1.問題產生的原因 Spring MVC的配置文件和Spring的配置文件裏面都使用了掃描註解<context:compon

Mybatis(使用)Spring整合

密碼 spring整合 com span 代碼 使用 pos ron log 1.總結 https://pan.baidu.com/s/1kWpz7ZD 密碼:tsvr 2.代碼 https://pan.baidu.com/s/1mjgAeak 密碼:h9j8 3.

ActiveMQspring整合

arc 整合 schema emp jar dep mqc and cti 第一步:引用相關的jar包 <dependency> <groupId>org.springframework</groupId

Redisspring整合

sts color property cati connect tco 6.2 class 127.0.0.1 第一種方式: 依賴: <dependency> <groupId>redis.clients</groupId>

CXFSpring整合

      WebService的主要目標是跨平臺的可互操作性。為了達到這一目標,WebService完全基於XML(可擴充套件標記語言)、XSD(XMLSchema)等獨立於平臺、獨立於軟體供應商的標準,是建立可互操作的、分散式應用程式的新平臺。簡單的說WebSe

使用CXFSpring整合實現RESTFul WebService

以下引用與網路中!!!     一種軟體架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。   &nbs