Redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。
Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關系數據庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。
Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹復制。存盤可以有意無意的對數據進行寫操作。由於完全實現了發布/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道並接收主服務器完整的消息發布記錄。同步對讀取操作的可擴展性和數據冗余很有幫助。
以上是百度百科上面關於Redis的一些介紹,現在就來學習一下具體Redis的安裝和使用。
Redis的下載鏈接為一下的地址,選擇自己合適的版本。https://github.com/MSOpenTech/redis/releases
下載完成后,直接解壓到指定的文件夾,在修改完文件夾名稱后,直接在文件夾內部運行cmd命令redis-server.exe redis.windows.conf。如果你修改了默認的配置路徑,就可以直接敲redis-server.exe。運行成功后的界面如下:
運行成功后,現在Redis的客戶端敲一些命令,熟悉一下。原來的cmd窗口不要關閉,在開啟一個cmd窗口。命令為:redis-cli.exe -h 127.0.0.1 -p 6379。主機號和端口號大家應該都知道,不再介紹。成功界面如下:
現在開始存儲key value。命令如下:
set Hello World
get Hello
成功界面如下:
剩下就是java代碼了。編寫代碼需要jar包,我這里把依賴放上去,jar包會在我的GitHub上面的項目里面。我這里的代碼使用的是jar包。依賴如下:
<!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
剩下就是代碼了,代碼沒有什么難度,我在代碼中的注釋也比較詳細。沒有什么可以講的,就是一個工具,大家會使用就可以了。在使用的過程中去學習也是可以的。代碼如下:
package RedisTrain; import java.util.List; import java.util.Set; import redis.clients.jedis.Jedis; public class RedisTrainDemo1 { public static void main(String[] args) { /** * 特點 * Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。 * Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。 * Redis支持數據的備份,即master-slave模式的數據備份。 * * 優點 * 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。 豐富的數據類型 – Redis支持二進制案例的 * Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。 原子 – * Redis的所有操作都是原子性的,意思就是要么成功執行要么失敗完全不執行。單個操作是原子性的。多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來。 * 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。 * */ // 連接本地的Redis服務 //redis.clients.jedis.exceptions.JedisConnectionException這個是Redis數據庫沒有啟動的異常,重新啟動即可 Jedis jedis = new Jedis("localhost"); System.out.println("本地Redis連接服務成功"); // 查看本地Redis服務狀態 System.out.println("本地Redis服務狀態:" + jedis.ping()); //存儲字符串數據 jedis.set("baidu", "www.baidu.com"); System.out.println("存儲的字符串數據為:"+jedis.get("baidu")); //存儲list數據 jedis.lpush("list","haha1"); jedis.lpush("list","haha2"); jedis.lpush("list","haha3"); jedis.lpush("list","haha4"); //取出list數據 List<String> list = jedis.lrange("list", 0, 4); System.out.print("存儲的list集合內的數據為:"); for(String zfc:list) { System.out.print(zfc+" "); } System.out.println(); //獲取 //jedis.keys該方法返回的是一個set,必須要使用set。可以只用強轉 Set<String> keys = jedis.keys("*"); System.out.print("Redis中的key有:"); for(String key:keys) { System.out.print(key+" "); } } }
剩下就沒有什么難點了,主要還是在項目中的使用。另外,我的學習都是在這個網站上面學習的http://www.runoob.com/redis/redis-conf.html