初始redis,人們總說它是一個緩存,後來才明白,其實就是個數據庫,可是這個數據庫不是把數據持久化到硬盤,而是存在內存中。所以寫入和讀取速度都是比通常數據庫好比mysql快的多,因此能夠做爲緩存。java
redis是一個非關係型數據庫,什麼叫非關係型數據庫呢,這是相對於關係型數據庫來講的。關係型數據庫就是咱們常常見到的mysql、oracle、sqlserver等數據庫,它們的存儲讀取都是靠sql來操做的,並且都有表結構。而非關係型數據庫是沒有表結構的,因此也不能用sql來操做。事實上,redis數據庫中存儲的都是形如key-value形式的數據,看似像一個map,存值的時候,能夠set,取值的時候,能夠get。mysql
想要使用redis,首先須要啓動一個redis服務,正如咱們使用mysql的時候也須要先安裝mysql服務,並啓動,在windows系統上,有封裝好的免安裝版redis服務,解壓後,管理員權限運行redis目錄下的redis-server.exe,就啓動了一個redis服務,以下,redis的默認端口是6379redis
接下來,在程序中咱們試着往裏存數據,新建一個java項目,引入jedis的jar包sql
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
接着,咱們用main方法測試數據庫
public static void main(String[] args) { //鏈接redis //第一個參數爲redis服務器的地址,這裏是本機 //第二個參數爲端口,redis默認爲6379 Jedis jedis = new Jedis("localhost",6379); //其餘操做,見下文中的代碼 }
在redis存取值時,都是用上述redis對象來操做windows
redis能夠存儲五種類型結構的數據,strings、hashs、lists、sets、sorted sets緩存
下面一一介紹服務器
首先就是strings,這個就至關於java中的Map<String,String>類型數據結構
//存一對兒key-value值 jedis.set("name","zhangsan"); //存好多對兒key-value值 jedis.mset("sex","1","age","27"); //存一對兒key-value值,而且設置有效期,單位爲秒 jedis.setex("score",15,"60"); //給key爲name的value值後面拼接追加字符串lisi jedis.append("name","lisi");
利用可視化工具看到的爲:oracle
score的顏色是灰色,那是由於它是臨時值,在15秒後就會被自動刪除掉
//獲取一個key的值 String a = jedis.get("name"); //獲取多個key的值 List list = jedis.mget("name","age","sex");
第二種數據結構爲hashs,這個至關於java中的Map<String,Map<String,String>>;
//添加key爲url,值爲【key爲google,value爲www.google.com】的記錄 jedis.hset("url","google","www.google.com"); //添加key爲url,值爲【key爲baidu,value爲www.baidu.com】的記錄 jedis.hset("url","baidu","www.baidu.com"); //批量設置 Map<String,String> map = new HashMap<String,String>(); map.put("name","zhangsan"); map.put("sex","1"); map.put("age","27"); jedis.hmset("userinfo",map);
//獲取url中的google對應的值 String a = jedis.hget("url", "google"); //獲取url中google、baidu對應的值 List b = jedis.hmget("url","google","baidu"); //獲取userinfo中存儲的全部信息 Map c = jedis.hgetAll("userinfo");