前言
redis是用鍵值對的形式來儲存資料,鍵型別只能是String,但是值型別可以有String、List、Hash、Set、Sorted Set五種,來滿足不同場景的特定需求。
本部落格中的示例不是將控制檯作為redis的一個客戶端,而是將redis運用在java裡進行測試
需要有java redis的驅動包,可以通過引入maven的依賴即可
<dependency> <groupId>org.rarefiedredis.redis</groupId> <artifactId>redis-java</artifactId> <version>0.0.17</version> </dependency>
String
String型別是最基礎的一種key-value儲存形式,value其實不僅僅可以是String,也可以是數值型別。常常用來做計數器這類自增自減的功能,可用在粉絲數、微博數等。
示例
1 //連線本地的 Redis 服務 2 Jedis jedis = new Jedis("localhost"); 3 System.out.println("連線成功"); 4 //檢視服務是否執行 5 System.out.println("服務正在執行: "+jedis.ping()); 6 //String例項 7 jedis.set("hello", String.valueOf(1)); 8 jedis.incr("hello"); 9 jedis.set("hello1","word1"); 10 System.out.println(jedis.get("hello")); 11 System.out.println(jedis.mget("hello","hello1"));
常用命令
- set
- get
- mget
- incr
- decr
List
list就是連結串列,在redis實現為一個雙向連結串列,可以從兩邊插入、刪除資料。應用場景可以有微博的關注列表、粉絲列表、訊息列表等。
有一個lrange函式,可以從某個元素開始讀取多少個元素,可用來實現分頁功能。
示例
1 /*list例項,雙向連結串列結構,適合做訊息佇列, 2 但其實真正應用中一般都會用專門做訊息佇列的中介軟體例如RabbitMQ*/ 3 jedis.lpush("201宿舍","hlf"); 4 jedis.lpush("201宿舍","css"); 5 jedis.lpush("201宿舍","ty"); 6 jedis.lpush("201宿舍","jy"); 7 List<String> name = jedis.lrange("201宿舍",0,3); 8 for (String person:name 9 ) { 10 System.out.print(person+" "); 11 }
常用命令
- lpush
- rpush
- lpush
- lpop
- lrange
Hash
hash就是值型別儲存的是一個鍵值對形式,適合儲存物件型別資訊,例如個人資訊、商品資訊等。
示例
1 //hash例項,適合儲存物件 2 HashMap<String,String> map = new HashMap<String, String>(); 3 map.put("name","hlf"); 4 map.put("sex","女"); 5 map.put("age","21"); 6 jedis.hmset("hlf",map); 7 jedis.hset("hlf","major","software"); 8 Map<String,String> map1 = jedis.hgetAll("hlf"); 9 String age = jedis.hget("hlf","age"); 10 System.out.println(map1); 11 System.out.println(age);
常用命令
- hset
- hmset
- hget
- hgetAll
Set
set表示儲存的一個元素不重合的集合,因為set集合支援查緝、並集操作,因此適合做共同好友等功能
示例
1 //set例項 2 jedis.sadd("set","hhh"); 3 jedis.sadd("set","ff"); 4 jedis.sadd("set","hhh"); 5 System.out.println(jedis.smembers("set")); 6 jedis.sadd("set1","oo"); 7 jedis.sadd("set1","ff"); 8 System.out.println("交集:"+jedis.sinter("set","set1")); 9 System.out.println("合集:"+jedis.sunion("set","set1"));
常用命令
- sadd
- spop
- smembers
- sunion
- sinter
Sorted Set
相對於Set,Sorted Set多了一個Score作為權重,使集合裡面的元素可以按照score排序,注意它是Set,所以它裡面的元素也不能重複
示例
//sorted set例項 jedis.zadd("set2",4,"redis"); jedis.zadd("set2",3,"mysql"); jedis.zadd("set2",2,"kk"); jedis.zadd("set2",1,"redis"); System.out.println(jedis.zrangeByScore("set2",0,4));
常用命令
- zadd
- zpop
- zrangeByScore