標籤:
package com.wangzhu.redis;import java.util.List;import org.junit.After;import org.junit.Before;import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;/** * Redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value類型相對更多,<br/> * 包括string(字串)、list(鏈表)、 set(集合)、zset(sorted set --有序集合)和hash(雜湊類型)。<br/> * 這些資料類型都支援push/pop、add/remove及取交集並集和差集及更豐富的操作 ,而且這些操作都是原子性的。<br/> * 在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是緩衝在記憶體中。<br/> * 區別的是redis會周期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave。<br/> * 所需jar包:jedis-2.6.2.jar hamcrest-core-1.3.jar junit-4.11.jar<br/> * * @author wangzhu * @date 2015-3-9上午9:10:16 * */public class TestRedis { Jedis jedis; JedisPool pool; @Before public void init() { pool = new JedisPool(new JedisPoolConfig(), "localhost"); jedis = pool.getResource(); } @Test public void testPing() { System.out.println("Servier is runnning: " + jedis.ping()); // Servier is runnning: PONG } @After public void destroy() { jedis.disconnect(); } @Test public void testString() { // 擷取 System.out.println("get===" + jedis.get("strKey")); // 設定 System.out.println("set===" + jedis.set("strKey", "qingyezhu")); // 擷取 System.out.println("get===" + jedis.get("strKey")); // 刪除 System.out.println("del===" + jedis.del("strKey")); // get===null // set===OK // get===qingyezhu // del===1 } @Test public void testList() { String listKey = "listKey"; // System.out.println("lpush===" // + jedis.lpush(listKey, "Redis", "MongoDb", "MySql", "Oracle", // "Db2")); System.out.println("lpush====" + jedis.lpush(listKey, "other")); long len = jedis.llen(listKey); System.out.println("size===" + len); List<String> list = jedis.lrange(listKey, 0, len); System.out.println("list====" + list); for (int i = 0; i < len; i++) { System.out.println(i + "===lindex===" + jedis.lindex(listKey, i)); } System.out.println(jedis.llen(listKey)); }}
1、字串操作設定key的值set key value擷取key的值get key設定到期的毫秒數pexpire key 10000查看key的生命週期(毫秒)pttl key設定key的生命週期(秒)expire key 1查看key的生命週期(秒)ttl key把指定的key設定為永久有效perisist key刪除一個keydel key返回隨機keyrandomkey返回key儲存的類型type key改名rename key newkey一次設定多個值mset key1 value key2 value key3 value一次擷取多個值mget key1 key2 key3把value追加到key的原值上append key value取指定key的value值得長度strlen key2、鏈表操作Redis的list類型其實就是一個每個子項目都是string類型的雙向鏈表,鏈表的最大長度是2^32。list既可以用做棧,也可以用作隊列。list的pop操作還有阻塞版本,主要是為了避免輪詢。把值插入到鏈表頭部lpush key value把值插入到鏈表尾部rpush key value返回並刪除鏈表頭部元素lpop key返回並刪除鏈表尾部元素rpop key返回鏈表中[start,stop]中的元素lrange key start stop計算鏈表的元素的個數llen key返回index索引上的值lindex key index3、hashed類型操作Redis的hash是一個string類型的field和value的映射表,它的添加、刪除操作都是O(1)(平均)。hash特別適用於儲存物件,將一個Object Storage Service在hash類型中會佔用更少的記憶體,並且可以方便的存取整個對象。配置:#配置欄位最多64個hash_max_zipmap_entries 64#配置value最大為512位元組hash_max_zipmap_value 512設定hash1的field為valuehset hash1 field value擷取指定的hash fieldhget hash1 field同時設定多個fieldhmset hash1 field1 value1 field2 value2 field3 value3一次擷取多個fieldhmget hash1 field1 field2 field3測試製定的hash field是否存在hexists hash1 field擷取hash的field數量hlen hash1返回hash所有的fieldhkeys hash1返回hash所有的valuehvals hash1擷取某個hash中全部的field及valuehgetall hash1刪除指定的fieldhdel hash1 field4、集合結構操作特點:無序性、確定性、唯一性往集合眾添加元素sadd key value1 value2 value3擷取集合所有的元素smembers key刪除集合某個元素srem key value返回並刪除集合中的一個隨機元素spop key隨機取一個元素srandmember key判斷集合中是否有某個值sismember key value返回集合元素的個數scard key求key1 key2 key3的交集sinter key1 key2 key3求key1 key2的並集sunion key1 key2求key1 key2的差集sdiff key1 key2求key1 key2的交集並存在res裡sinterstore res key1 key2把source的value移動到dest集合中smove source dest value6、有序集合概念:它是在set的基礎上增加了一個順序屬性,這一屬性在添加修改元素的時候可以指定,每次指定後,zset會自動按新的值調整順序。添加元素zadd key score1 value1查詢member的排名zrank key member返回集合元素的個數zcard key刪除集合中的元素zrem key value1 value2
參考:
Redis記憶體使用量最佳化與儲存【http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage】
Windows下Redis的安裝使用【http://os.51cto.com/art/201403/431103.htm】
初識Redis