spring整合redis使用

這裏就不說redis官方提供jedis來操做redisredis

講spring整合了jedis以後的用法spring

 

首先pom.xml先加依賴數組

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>ide

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>this

第一個是jedis依賴 第二個是spring整合jedis依賴spa

而後是spring的配置文件code

<!--redis的配置 不是必須的 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!--最大空閒數 -->
<property name="maxIdle" value="2" />
<!--最大鏈接數 -->
<property name="maxTotal" value="100" />
<!--最大等待時間 -->
<property name="maxWaitMillis" value="20000" />
</bean>xml

 

<!--redis鏈接工廠對象 經過這個對象 創建和redis的鏈接 -->
<bean name="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<!--redis的IP地址 若是是本機就是127.0.0.1 -->
<property name="hostName" value="192.168.205.129"></property>
<!-- redis的端口 -->
<property name="port" value="6379"></property>
<!-- redis的密碼 若是沒有密碼 能夠省略 -->
<property name="password" value="123456"></property>
<!-- redis配置 不是必須的 -->
<property name="poolConfig" ref="poolConfig"></property>
</bean>對象

<!--jdk序列化器 能夠將存入redis中的值進行序列化 取出會進行反序列化 -->
<bean name="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer">
</bean>blog

<!--String序列化器 能夠將存入redis中的鍵 進行序列化 取出會進行反序列化 -->
<bean name="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer">
</bean>

 

<!-- 配置redis模板對象 這是咱們操做redis的對象 -->
<bean name="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<!-- 傳入redis鏈接工廠對象 -->
<property name="connectionFactory" ref="connectionFactory"></property>
<!-- 傳入 鍵 序列化器 -->
<property name="keySerializer" ref="stringRedisSerializer"></property>
<!-- 傳入 值 序列化器 -->
<property name="valueSerializer" ref="jdkSerializationRedisSerializer"></property>
</bean>

 

以上就是spring整合jedis的配置  後續操做redis  只須要經過spring容器獲得redisTemplate對象就能夠了

 

/** * 使用spring整合redis的 RedisTemplate對象 * 保存對象到redis和從redis中讀取對象 * * */
public class Test1 { public static void main(String[] args) { ClassPathXmlApplicationContext xml=new ClassPathXmlApplicationContext("classpath:spring/spring.xml"); //從spring容器中得到redis模板對象 
        RedisTemplate<String,Object>  redisTemplate=xml.getBean("redisTemplate", RedisTemplate.class); //建立要保存的對象
     User u=new User(); u.setUserID(1); u.setUserName("張三"); u.setUserTime(new Date()); //以字符串的格式 將對象序列化後存入redis
     redisTemplate.opsForValue().set("user:1", u); //從redis中取出指定鍵的值 並強轉成User
     User user=(User)redisTemplate.opsForValue().get("user:1"); System.out.println(user); } }

 

我這是將一個對象 序列化後 以redis的字符串數據類型存儲到redis中  而後經過key查詢這個值 會自動反序列化  變成存入的對象

這是由於在配置文件中配置了jdk序列化器 和string序列化器  存入redis時都會序列化轉成字節數組 以字符串的形式存入,取出會反序列化構建成對象

可是這樣咱們經過redis客戶端查詢時  值就是咱們讀不懂的字節數組  並且就算咱們存入的是 普通字符串也會被序列化成字節數組

若是沒有存對象的需求  能夠不配置jdk序列化器和string序列化器  這樣只存取字符串 那經過客戶端查詢 也是能夠看得懂的格式

 

把我這個bean類也貼出來    注意 實現序列化接口是必須的  否則不能將這個類的對象序列化

public class User implements Serializable { private static final long serialVersionUID = -8191663210611660061L; private Integer userID; private String userName; private Date userTime; public Integer getUserID() { return userID; } public void setUserID(Integer userID) { this.userID = userID; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Date getUserTime() { return userTime; } public void setUserTime(Date userTime) { this.userTime = userTime; } @Override public String toString() { return "User [userID=" + userID + ", userName=" + userName + ", userTime=" + userTime + "]"; } }

 

基本的使用差很少了  這個RedisTemplate 是對jedis的封裝  

Redis五大類型:字符串(String)、哈希/散列/字典(Hash)、列表(List)、集合(Set)、有序集合(sorted set)五種
對應的RedisTemplate對象操做這五種數據類型的API 這都是得到redisTemplate裏面的內部類對象 在具體的方法 能夠本身百度 或者看名字猜 方法很少
redisTemplate.opsForValue();//操做字符串
redisTemplate.opsForHash();//操做hash
redisTemplate.opsForList();//操做list
redisTemplate.opsForSet();//操做set
redisTemplate.opsForZSet();//操做有序set
相關文章
相關標籤/搜索