91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring+Redis集成怎么實現關系型數據庫持久化

發布時間:2021-12-30 15:36:38 來源:億速云 閱讀:153 作者:iii 欄目:開發技術

這篇文章主要講解了“Spring+Redis集成怎么實現關系型數據庫持久化”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spring+Redis集成怎么實現關系型數據庫持久化”吧!

Redis是一個分布式的內存對象緩存系統,在我們的Web應用上集成中,有的用作持久化框架的二級緩存,有的用作一個單獨的緩存系統,兩者最終目的都是為了減小數據庫服務器的壓力,如果將Redis用作持久化框架的二級緩存,則顯得有點大才小用,所以,我們將它獨立出來,也方便以后的Redis集群。 在Spring-Redis集成中,在Spring的官方網站上有個Project是Spring-data-redis,其中就有我們需要的東西! 我們需要的jar包有兩個:         
1)spring-data-redis-1.1.1.RELEASE.jar        
2)需要redis的java客戶端,比較流行的java客服端有Jedis、JRedis,這里我們用最popular的Jedis客戶端,jedis-2.1.0.jar 

一、Spring的配置文件 官方的Jedis的Spring的配置文件如下: 如果采用模板的話,配置文件如下: 
在這里我們需要進行修改,自定義自己的Spring配置文件,而且我們采用連接池的方式,從連接池中獲取連接,Spring配置文件如下: 

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig" >         <!-- 最大活躍連接數 -->           
<property name="maxActive" value="20" />           <!-- 最大閑置數量 -->         
<property name="maxIdle" value="20" />           <!-- 最大等待時間 -->         
<property name="maxWait" value="1000" />          <!-- 調用borrow 一個對象方法時,是否檢查其有效性 -->          
<property name="testOnBorrow" value="true"/>          <!-- 調用return 一個對象方法時,是否檢查其有效性 -->        
<property name="testOnReturn" value="ture"/>    
</bean>
     
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">         
<!-- redis所在的ip -->         
<property name="hostName" value="192.168.1.200"/>         
<!-- redis的端口 -->         
<property name="port" value="6379"/>         
<!-- 是否啟用連接池 -->         
<property name="usePool" value="true"/>         
<!-- 連接池的配置參考 -->         
<property name="poolConfig" ref="jedisPoolConfig" />     
</bean> 這樣,在我們需要用到jedisConnectionFactory的類中,將jedisConnectionFactory注入進去,并從這個工廠獲取JedisConnection對象。 


二、測試
1)實體類:     


public class Student implements Serializable {          /**      *       */     
private static final long serialVersionUID = 3951779424645593223L;     private int id;         
private String name;          
private int age;     
public int getId()     {         
return id;     
}     
public void setId(int id)     {         
this.id = id;     
}     
public String getName()     {         
return name;     
}     
public void setName(String name)     {         
this.name = name;     
}     
public int getAge()     {         
return age;     
}     
public void setAge(int age)     {         
this.age = age;     
}     
@Override     
public String toString()     {         return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";     } 



2)用Mybatis作為持久化框架,我們的Mapper是用注解形式寫的:     
public interface StudentMapper{          
@Insert("insert into user(name,age) values(#{name},#{age})")     
@Options(useGeneratedKeys=true,keyProperty="id")     
int insert(Student student);     
@Select("select * from user where id = #{id}")     
Student queryById(@Param("id")int id); 



3)service的實現類     
public class StudentServiceImpl extends BaseService implements IStudentService{          
private StudentMapper studentMapper;          
private JedisConnectionFactory jedisConnectionFactory;     
@Override     
public void add(Student student){         
studentMapper = writableSQLSession.getMapper(StudentMapper.class);         
int id = studentMapper.insert(student);         
System.out.println(id);         
JedisConnection connection = jedisConnectionFactory.getConnection();         
Map<byte[],byte[]> map = new HashMap<byte[],byte[]>();         
map.put(SerializableUtil.serialize("name"), SerializableUtil.serialize(student.getName()));         
map.put(SerializableUtil.serialize("age"), SerializableUtil.serialize(student.getAge()));         
connection.hMSet(SerializableUtil.serialize(id), map);     
}
     
@Override     
public Student queryById(int id){         
JedisConnection connection = jedisConnectionFactory.getConnection();         
Map<byte[],byte[]> map = connection.hGetAll(SerializableUtil.serialize(id));         
if(map.size() > 0){             
System.out.println("----進緩存----");             
byte[] byteName = map.get(SerializableUtil.serialize("name"));             
byte[] byteAge = map.get(SerializableUtil.serialize("age"));             
String name = SerializableUtil.unserialize(byteName).toString();             
int age = Integer.valueOf(SerializableUtil.unserialize(byteAge).toString());             
System.out.println(name);             
System.out.println(age);             
Student student = new Student();             
student.setAge(age);             
student.setName(name);                          
return student;         
}else{             
System.out.println("----進數據庫----");             
studentMapper = readonlySQLSession.getMapper(StudentMapper.class);             
return studentMapper.queryById(id);         
}     
}     
public void setJedisConnectionFactory(JedisConnectionFactory jedisConnectionFactory)     {         
this.jedisConnectionFactory = jedisConnectionFactory;     




注意:         
1)這里我用的數據庫session是做了讀寫分離,并封裝進BaseService中,在你做的時候,把它換成你自己的數據庫Session就可以了!         


2)存數據:                     
這里我用的向緩存中存對象的方法是用HashMap存的,這個和普通的鍵值對存放的方式有不同。                     


(1)普通鍵值對存放方式:                         
*************************************                         
*        key              *       value       *                         
* ***********************************                         
*        key1            *       value1     *                         
*        key2            *       value2     *                         
*        key3            *       value3     *                         
* ***********************************                     
(2)hashmap存放方式                         
例如我們存放Student對象,id:1,name:student1,age:18,其存放方式為:                         
***********************************************************                         
*        key               *                          value                    *                         
***********************************************************                         
*          1                 *            key           *         value       *                         *                             
***************************************                         
*                             *            name        *        student   *                         
*                             *            age           *        18            *                         
***********************************************************                         
這樣存的好處是鍵值對中的值也是采用鍵值對的方式進行存儲,方便我們取值。         
3)取數據:                   
我們首先根據序列化之后的id,去緩存中取,也是采用hashmap這種方式去取值,同時判斷這個map的大小,如果有值,則取value中的值進行反序列化,然后返回對象,如果沒有,則進數據庫中去取值,然后在放入緩存中! 
測試類: 
public class TestRedis{     
static IStudentService service;          
@BeforeClass     
public static void setUpBefor(){         
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext/applicationContext.xml");         
service = (IStudentService) context.getBean("studentService");     }          
@Test     
public void testAdd(){         
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext/applicationContext.xml");         
IStudentService service = (IStudentService) context.getBean("studentService");                  
Student student = new Student();         
student.setName("student1");         
student.setAge(29);                  
service.add(student);     
}          
@Test     
public void testQuery(){         
int id = 10;         
Student student = service.queryById(id);         
System.out.println(student);     


感謝各位的閱讀,以上就是“Spring+Redis集成怎么實現關系型數據庫持久化”的內容了,經過本文的學習后,相信大家對Spring+Redis集成怎么實現關系型數據庫持久化這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广德县| 正镶白旗| 宣威市| 昌吉市| 宜春市| 南宁市| 乐平市| 宝坻区| 肇庆市| 乐都县| 天镇县| 襄樊市| 华坪县| 南宫市| 盘山县| 洛宁县| 青川县| 理塘县| 财经| 麻阳| 卢湾区| 拜泉县| 大丰市| 十堰市| 胶南市| 济阳县| 寿阳县| 育儿| 翁源县| 诸城市| 泸水县| 资阳市| 梅州市| 龙江县| 巧家县| 苍南县| 娱乐| 繁昌县| 志丹县| 莲花县| 清镇市|