Redis是一個key-value存儲系統。和Memcached相似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操做,並且這些操做都是原子性的。在此基礎上,redis支持各類不一樣方式的排序。與memcached同樣,爲了保證效率,數據都是緩存在內存中。區別的是redis會週期性的把更新的數據寫入磁盤或者把修改操做寫入追加的記錄文件,而且在此基礎上實現了master-slave。java
1、安裝Redis
git
一、官網地址:http://redis.io/download github
二、github下載地址:https://github.com/MSOpenTech/redis/releasesredis
三、下載完畢直接解壓到硬盤位置便可windows
2、啓動Redis緩存
一、使用命令方式啓動服務器
服務器
redis-server.exe redis.windows.conf
以下圖:app
注意保持上面的窗口不被關閉,不然服務器就會關閉中止沒法進行測試。maven
二、測試Redis
memcached
使用命令
redis-cli.exe -h 127.0.0.1 -p 6379
以下:
新開一個窗口一樣進行測試
3、JAVA環境下測試 參考:http://flychao88.iteye.com/blog/1527163
一、建立maven項目 redisDemo
二、引入jar
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</version> </dependency>
三、
package com.xh.test; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class RedisTest { private JedisPool pool; private Jedis jedis; @Before public void setUp(){ pool = new JedisPool(new JedisPoolConfig(),"127.0.0.1"); jedis = pool.getResource(); } @Test public void get(){ System.out.println("獲取緩存:"+jedis.get("userName")); System.out.println("獲取緩存:"+jedis.get("address")); } /** * 存儲基礎的字符串數據 */ @Test public void saveString(){ // 1.1 添加數據 jedis.set("name", "楓景科技"); System.out.println("獲取1:"+jedis.get("name")); // 1.2.1 修改數據 jedis.append("name", "有限公司"); System.out.println("獲取2:"+jedis.get("name")); // 1.2.1 覆蓋 jedis.set("name", "楓景科技集團"); System.out.println("獲取3:"+jedis.get("name")); // 1.3 刪除對應記錄 jedis.del("name"); System.out.println("獲取4:"+jedis.get("name")); // 1.4 mset jedis.mset("qq","123456","email","123@163.com"); System.out.println("獲取5:"+jedis.mget("qq","email")); } /** * 操做map數據 */ @Test public void saveMap(){ Map<String,String> user=new HashMap<String,String>(); user.put("name","hanfeng"); user.put("pwd","123456"); jedis.hmset("user", user); List<String> rsmap = jedis.hmget("user", "name"); System.out.println(rsmap); // jedis.hdel("user","pwd"); System.out.println(jedis.hmget("user", "name")); System.out.println(jedis.hmget("user", "pwd")); System.out.println(jedis.hlen("user")); System.out.println(jedis.exists("user")); System.out.println(jedis.hkeys("user")); System.out.println(jedis.hvals("user")); Iterator<String> iterator = jedis.hkeys("user").iterator(); while (iterator.hasNext()) { String key = iterator.next(); System.out.println(key+":"+jedis.hmget("user",key)); } } /** * jedis操做Set */ @Test public void testSet(){ //添加 jedis.sadd("sname","張三"); jedis.sadd("sname","李四"); jedis.sadd("sname","王五"); jedis.sadd("sname","趙六"); //移除noname // jedis.srem("sname","noname"); System.out.println(jedis.smembers("sname"));//獲取全部加入的value System.out.println(jedis.sismember("sname", "張三"));//判斷 minxr 是不是sname集合的元素 System.out.println(jedis.srandmember("sname")); System.out.println(jedis.scard("sname"));//返回集合的元素個數 } @Test public void test() throws InterruptedException { //keys中傳入的能夠用通配符 System.out.println(jedis.keys("*")); //返回當前庫中全部的key [sose, sanme, name, jarorwar, foo, sname, java framework, user, braand] System.out.println(jedis.keys("*name"));//返回的sname [sname, name] System.out.println(jedis.del("sanmdde"));//刪除key爲sanmdde的對象 刪除成功返回1 刪除失敗(或者不存在)返回 0 System.out.println(jedis.ttl("sname"));//返回給定key的有效時間,若是是-1則表示永遠有效 jedis.setex("timekey", 10, "min");//經過此方法,能夠指定key的存活(有效時間) 時間爲秒 Thread.sleep(5000);//睡眠5秒後,剩餘時間將爲<=5 System.out.println(jedis.ttl("timekey")); //輸出結果爲5 jedis.setex("timekey", 1, "min"); //設爲1後,下面再看剩餘時間就是1了 System.out.println(jedis.ttl("timekey")); //輸出結果爲1 System.out.println(jedis.exists("key"));//檢查key是否存在 System.out.println(jedis.rename("timekey","time")); System.out.println(jedis.get("timekey"));//由於移除,返回爲null System.out.println(jedis.get("time")); //由於將timekey 重命名爲time 因此能夠取得值 min //jedis 排序 //注意,此處的rpush和lpush是List的操做。是一個雙向鏈表(但從表現來看的) jedis.del("a");//先清除數據,再加入數據進行測試 jedis.rpush("a", "1"); jedis.lpush("a","6"); jedis.lpush("a","3"); jedis.lpush("a","9"); System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1] System.out.println(jedis.sort("a")); //[1, 3, 6, 9] //輸入排序後結果 System.out.println(jedis.lrange("a",0,-1)); } }