redis 與 spring整合 hash 增刪改操作 list增刪改操作
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() + ""
(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型別相
redis與spring整合·
odi pro classpath sch isp stack exception tst 阻塞 配置spring配置文件applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <bea
Redis的叢集搭建與Redis與spring整合
叢集: 高可用,滿足高併發, 把資料分佈在不同的節點上,提高單個節點的效能 1.redis叢集 架構細節: (1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進位制協議優化傳輸
redis與spring整合--不使用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預
quartz與spring整合實現動態任務增刪改查
本文最初是為了實現定時推送功能,為推送設定一個時間,到時間後推送到雲巴伺服器。 所以這裡會用到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進行重構。於是就進
redis與spring的完全整合
下載spring-data-redis,gav如下: <dependency> <groupId>org.springframework.data</groupId> <artifa
Mybatis與Spring整合(一)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 <?
mybatis與spring整合
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 MVC與Spring整合時實例被創建兩次的解決方案以及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.
ActiveMQ與spring整合
arc 整合 schema emp jar dep mqc and cti 第一步:引用相關的jar包 <dependency> <groupId>org.springframework</groupId
Redis和spring整合
sts color property cati connect tco 6.2 class 127.0.0.1 第一種方式: 依賴: <dependency> <groupId>redis.clients</groupId>
CXF與Spring整合
WebService的主要目標是跨平臺的可互操作性。為了達到這一目標,WebService完全基於XML(可擴充套件標記語言)、XSD(XMLSchema)等獨立於平臺、獨立於軟體供應商的標準,是建立可互操作的、分散式應用程式的新平臺。簡單的說WebSe
使用CXF與Spring整合實現RESTFul WebService
以下引用與網路中!!! 一種軟體架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。 &nbs