1. 程式人生 > >Redis介紹

Redis介紹

筆記 繼續 http images key 算法 auth conf 筆記本

Redis 介紹
Redis是REmote DIctionary Server(遠程字典服務器)的縮寫,它以字典結構(key-value鍵值對結構)存儲數據,並允許其他應用通過TCP協議讀寫字典中的內容。所以,redis是一個key-value存儲系統,或者說是一個key-value數據庫。

Redis是用C語言開發的,並提供了幾十種不同編程語言的客戶端庫,即我們用java語言也可以操作redis。這種字典形式的存儲結構與常見的MySQL 等關系數據庫的二維表形式的存儲結構有很大的差異。關系型數據庫存儲的數據都是結構化數據Redis字典結構(k-v)的存儲方式使得開發者可以將程序中的數據直接映射到Redis中,數據在Redis中的存儲形式和其在程序中的存儲方式非常相近。使用Redis的另一個優勢是其對不同的數據類型提供了非常方便的操作方式,如使用集合類型存儲文章標簽,Redis可以對標簽進行如交集、並集這樣的集合運算操作。Redis存儲數據的介質是內存,所以可以提供高效的讀取。所以,redis數據庫,我們也稱之為非關系型數據庫(Nosql)。而mysql,oracle等數據庫稱之為關系型數據庫。這兩種類型的數據庫,沒有優劣之分,看具體的應用場景。

Redis的內存存儲和持久化Redis數據庫中的所有數據都存儲在內存中。由於內存的讀寫速度遠快於硬盤,因此Redis在性能上對比其他基於硬盤存儲的數據庫有非常明顯的優勢,在一臺普通的筆記本電腦上,edis可以在一秒內讀寫超過十萬個鍵值。將數據存儲在內存中也有問題,例如,程序退出後內存中的數據會丟失。不過 Redis提供了對持久化的支持,即將可以內存中的數據異步寫入到硬盤中,同時不影響繼續提供服務。

技術分享

技術分享

技術分享

技術分享

實現步驟:
1.下載Jedis依賴jar包
2.在maven工程裏,建立測試類
3.調用Jedis的API

/*
* 測試連接和插值
* 註意:1.關閉虛擬機的防火墻或代開指定的端口,比如6379
*/
@Test
public void testConnect_Set(){
Jedis jedis=new Jedis("192.168.234.231", 6379);
jedis.set("name","tom");

jedis.close();
}

/*
* 測試利用Jedis實現Redis的分片,底層用的是一致性hash算法來實現的。
* 所以可以更好的滿足數據的單調性和平衡性
*
*/
@Test
public void testShard(){
JedisPoolConfig config=new JedisPoolConfig();

List<JedisShardInfo> serverList=new ArrayList<>();

serverList.add(new JedisShardInfo("192.168.234.231",6379));
serverList.add(new JedisShardInfo("192.168.234.231",6380));

ShardedJedisPool pool=new ShardedJedisPool(config, serverList);

ShardedJedis jedis=pool.getResource();

for(int i=0;i<1000;i++){
jedis.set(i+"",i+"");
}
//用完後將jedis 連接還到池子
pool.returnResource(jedis);

}

}

 1 /**
 2  * 測試利用Jedis操作redis服務
 3  * @author
 4  *
 5  */
 6 public class redis{
 7     /*
 8      * 測試連接和插值
 9      * 註意:1.關閉虛擬機的防火墻或代開指定的端口,比如6379
10      */
11     @Test
12     public void testConnect_Set(){
13         Jedis jedis=new Jedis("192.168.234.231", 6379);
14         jedis.set("name","tom"); 
15         
16         jedis.close();
17     }
18     
19     /*
20      * 測試利用Jedis實現Redis的分片,底層用的是一致性hash算法來實現的。
21      * 所以可以更好的滿足數據的單調性和平衡性
22      * 
23      */
24     @Test
25     public void testShard(){
26         JedisPoolConfig config=new JedisPoolConfig();
27         
28         List<JedisShardInfo>  serverList=new ArrayList<>();
29         
30         serverList.add(new JedisShardInfo("192.168.234.231",6379));
31         serverList.add(new JedisShardInfo("192.168.234.231",6380));
32         
33         ShardedJedisPool pool=new ShardedJedisPool(config, serverList);
34         
35         ShardedJedis  jedis=pool.getResource();
36         
37         for(int i=0;i<1000;i++){
38             jedis.set(i+"",i+"");
39         }
40         //用完後將jedis 連接還到池子
41         pool.returnResource(jedis);
42 
43     }
44 
45 }

Redis介紹