初识Redis
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;@Beforepublic void init() {pool = new JedisPool(new JedisPoolConfig(), "localhost");jedis = pool.getResource();}@Testpublic void testPing() {System.out.println("Servier is runnning: " + jedis.ping());// Servier is runnning: PONG
}@Afterpublic void destroy() {jedis.disconnect();}@Testpublic 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
}@Testpublic 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刪除一個key
del key返回隨機key
randomkey返回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特別適用于存儲對象,
將一個對象存儲在hash類型中會占用更少的內存,并且可以方便的存取整個對象。配置:
#配置字段最多64個
hash_max_zipmap_entries 64
#配置value最大為512字節
hash_max_zipmap_value 512設置hash1的field為value
hset hash1 field value獲取指定的hash field
hget hash1 field同時設置多個field
hmset hash1 field1 value1 field2 value2 field3 value3一次獲取多個field
hmget hash1 field1 field2 field3測試制定的hash field是否存在
hexists hash1 field獲取hash的field數量
hlen hash1返回hash所有的field
hkeys hash1返回hash所有的value
hvals hash1獲取某個hash中全部的field及value
hgetall hash1刪除指定的field
hdel 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】
?
轉載于:https://www.cnblogs.com/xiaoxian1369/p/4322740.html
總結
- 上一篇: tpcc的测试
- 下一篇: android dpi