Redis的Java入門實踐 (轉)
1 , Redis Hello World 的例子
這裏用的包是Jedis。下載地址https://github.com/xetorthio/jedis/downloads
把jar包引入工程,打開redis的服務器(redis下載及安裝見初步理解Redis及其安裝配置)。開始打招呼的例子,以下
1 : Jedis jedis = new Jedis( "localhost" );
2 : jedis.set( "key" , "Hello World!" );
3 : String value = jedis.get( "key" );
4 : System.out.println(value);
分別測試下各類數據結構
System.out.println("==String==" );
Jedis jedis = new Jedis( "localhost" );
//String
jedis.set("key" , "Hello World!" );
String value = jedis.get("key" );
System.out.println(value);
//List
System.out.println("==List==" );
jedis.rpush("messages" , "Hello how are you?" );
jedis.rpush("messages" , "Fine thanks. I'm having fun with redis." );
jedis.rpush("messages" , "I should look into this NOSQL thing ASAP" );
List<String> values = jedis.lrange("messages" , 0 , - 1 );
System.out.println(values);
//Set
System.out.println("==Set==" );
jedis.sadd("myset" , "1" );
jedis.sadd("myset" , "2" );
jedis.sadd("myset" , "3" );
jedis.sadd("myset" , "4" );
Set<String> setValues = jedis.smembers("myset" );
System.out.println(setValues);
//Sorted Set
jedis.zadd("hackers" , 1940 , "Alan Kay" );
jedis.zadd("hackers" , 1953 , "Richard Stallman" );
jedis.zadd("hackers" , 1965 , "Yukihiro Matsumoto" );
jedis.zadd("hackers" , 1916 , "Claude Shannon" );
jedis.zadd("hackers" , 1969 , "Linus Torvalds" );
jedis.zadd("hackers" , 1912 , "Alan Turing" );
setValues = jedis.zrange("hackers" , 0 , - 1 );
System.out.println(setValues);
//Hash
System.out.println("==Hash==" );
Map<String, String> pairs = new HashMap<String, String>();
pairs.put("name" , "Akshi" );
pairs.put("age" , "2" );
pairs.put("sex" , "Female" );
jedis.hmset("kid" , pairs);
values = jedis.hmget("kid" , new String[]{ "name" , "age" , "sex" });
System.out.println(values);
setValues = jedis.hkeys("kid" );
System.out.println(setValues);
values = jedis.hvals("kid" );
System.out.println(values);
pairs = jedis.hgetAll("kid" );
System.out.println(pairs);
而後解決持久化的問題
redis是把全部的數據都放在內存的一種機制,須要常常同步到磁盤保證數據的持久化。數據全放在內存裏,真的很擔憂個人小機器啊~回頭數據大了調臺式機上把,再大了就。。。
這個題目比較大些,之後能夠單獨寫幾篇,如今急着用,入門麼,解決問題先。主要是兩種機制,快照(Snapshotting)和AOF(Append- only file)。AOF每次寫操做都會寫日誌,服務器當機的時候從那些日誌文件裏恢復。不過日誌文件會特別大,個人機器確定承受不起。快照是默認的方式,默認是每小時更新一次,手動調用save, shutdown, slave這些命令也會寫日誌。測試下save。
先用客戶端查詢一下剛纔代碼插入的東西。
image
東西仍是在內存裏的。而後把服務器關了。從新開啓,仍是有結果。
image
驗證是否是由於時間過過久了自動保存了,用java代碼新插入一個值。繼續關服務器和重啓等操做。
image
沒有值。證實以前的值存在確實是由於自動保存了,接着從新插入(這個若是覆蓋是個什麼狀況呢:貌似直接無情地覆蓋了),而後執行下保存。以後關閉,重啓。
jedis.set("newkey" , "Hello New New World!" );
String value = jedis.get("newkey" );
System.out.println(value);
jedis.save();
image
能夠看到newkey的值了,並且是覆蓋後的。save執行後會進行一第二天志備份。夠用了,先到這裏吧。
歡迎關注本站公眾號,獲取更多信息