日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Redis学习笔记——SpringDataRedis的使用

發布時間:2025/3/12 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis学习笔记——SpringDataRedis的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與Spring集成

我需要哪些jar包?

<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId> </dependency> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId> </dependency>

如何配置spring配置文件?

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--配置IP地址與端口號,連接redis服務器--><bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:hostName="127.0.0.1" p:port="6379" p:usePool="true"/><!--配置redisTemplate--><bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connectionFactory-ref="jedisConnectionFactory"/><!--配置stringRedisTemplate--><bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate" p:connectionFactory-ref="jedisConnectionFactory"/> </beans>

一般情況,只需要配置RedisTemplate或StringRedisTemplate其中一個就行,常用的為StringRedisTemplate。

RedisTemplate與StringRedisTemplate的區別?

StringRedisTemplate:

public class StringRedisTemplate extends RedisTemplate<String, String> {public StringRedisTemplate() {StringRedisSerializer stringSerializer = new StringRedisSerializer();this.setKeySerializer(stringSerializer);this.setValueSerializer(stringSerializer);this.setHashKeySerializer(stringSerializer);this.setHashValueSerializer(stringSerializer);}public StringRedisTemplate(RedisConnectionFactory connectionFactory) {this();this.setConnectionFactory(connectionFactory);this.afterPropertiesSet();}protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {return new DefaultStringRedisConnection(connection);} }

從上面的代碼可以看出,StringRedisTemplate繼承了鍵值類型都為String的RedisTemplate,且使用StringRedisSerializer作為序列化工具。所以StringRedisTemplate能使用的方法,RedisTemplate都能使用,下面的例子只會展示StringRedisTemplate的方法。

StringRedisSerializer:

public class StringRedisSerializer implements RedisSerializer<String> {private final Charset charset;public StringRedisSerializer() {this(Charset.forName("UTF8"));}public StringRedisSerializer(Charset charset) {Assert.notNull(charset);this.charset = charset;}public String deserialize(byte[] bytes) {return bytes == null?null:new String(bytes, this.charset);}public byte[] serialize(String string) {return string == null?null:string.getBytes(this.charset);} }

可以看出,StringRedisSerializer使用UTF8字符集處理字符串。

使用API操作基本redis基本數據類型


spring提供哪些接口操作redis基本數據?

第一組

ValueOperations:字符串類型操作 ListOperations:列表類型操作 SetOperations:集合類型操作 ZSetOperations:有序集合類型操作 HashOperations:散列操作

第二組

BoundValueOperations:字符串類型操作 BoundListOperations:列表類型操作 BoundSetOperations:集合類型操作 BoundZSetOperations:有序集合類型操作 BoundHashOperations:散列操作

如何獲得接口的實現?

第一組

ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue(); ListOperations<String, String> listOperations = stringRedisTemplate.opsForList(); SetOperations<String, String> setOperations = stringRedisTemplate.opsForSet(); ZSetOperations<String, String> zSetOperations = stringRedisTemplate.opsForZSet(); HashOperations<String, Object, Object> hashOperations = stringRedisTemplate.opsForHash();

第二組

BoundValueOperations<String, String> valueOperations = stringRedisTemplate.boundValueOps("key"); BoundListOperations<String, String> listOperations = stringRedisTemplate.boundListOps("key"); BoundSetOperations<String, String> setOperations = stringRedisTemplate.boundSetOps("key"); BoundZSetOperations<String, String> zSetOperations = stringRedisTemplate.boundZSetOps("key"); BoundHashOperations<String, Object, Object> hashOperations = stringRedisTemplate.boundHashOps("key");

從上面兩組實現可以發現,第二組API只是在第一組API的上面將key值的綁定放在獲得接口時了,此舉方便了每次操作基本數據類型的時候不用反復的去填寫key值,只需要操作具體的value就行了。

具體有哪些數據操作方式,如ValueOperations的get與set,ListOperations的push與pop等可以參照:Redis學習筆記(2)-Redis數據類型。他們的方法簽名與客戶端redis-cli操作redis時的簽名是一樣的。

使用API操作消息隊列


使用API前需要了解

Redis學習筆記(3)-Redis事務,過期時間,隊列

如何發送消息隊列?

RedisTemplate template = template.convertAndSend("channel", "message");

第一個參數為發送的消息的頻道,第二個參數為消息本身。

如何接受隊列中的消息?

public interface MessageDelegate {void handleMessage(String message);void handleMessage(Map message); void handleMessage(byte[] message);void handleMessage(Serializable message);void handleMessage(Serializable message, String channel); }

首先,需要一個符合MessageDelegate 接口方法簽名的類,這個類是自定義的,可以使用MessageDelegate 中的一個或多個簽名方式,如:

public class UserMessageDelegate {public void handleMessage(String message) {System.out.println(message);} }

得到此類后,將此類注冊到消息監聽容器中:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:redis="http://www.springframework.org/schema/redis"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/redishttp://www.springframework.org/schema/redis/spring-redis.xsd"><redis:listener-container><redis:listener ref="listener" method="handleMessage" topic="chatroom"/></redis:listener-container><bean id="listener" class="com.hzw.redis.listener.UserMessageDelegate"/></beans>

其中,topic就是你要監聽的頻道。

總結

以上是生活随笔為你收集整理的Redis学习笔记——SpringDataRedis的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。