Redis介紹
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介紹