redis(二)redis概述與jedis的使用
redis是一個高效能的、支援網路、可基於記憶體的key-value儲存機制的NoSQL資料庫。基於記憶體的特性使得redis有非比尋常的效能優勢。
關於redis的資料結構
作為key-value的資料庫,redis儲存的資料型別不止數值型別和字串型別,還包括以下幾種資料型別:
hash型別
hash型別是一種雜湊型別,和java中的hashMap很像,儲存的值可以包括多個不重複欄位,例如一個User物件的name和age都可以作為hash型別的一個欄位,相對於將每個欄位單獨儲存為String型別,hash型別更節省記憶體,因為redis的hash是用zipMap來儲存的,並不是hashTable, zipmap 相比正常的 hash實現可以節省不少hash本身需要的一些儲存開銷,雖然這樣使得hash的屬性的新增、刪除和查詢的時間複雜度為O(n),但是一般用hash型別儲存物件,而物件的屬性一般不會太多,因此平均時間複雜度接近於O(1),並且,當field或value的大小超過一定大小時,redis會將hash型別從zipMap轉換成正常的hash實現,這個限制可以在配置檔案中如下指定
hash-max-zipmap-entries 64 #配置欄位最多 64 個
hash-max-zipmap-value 512 #配置 value 最大為 512 位元組
list型別
list型別是一種有序的列表型別,實現是用雙向連結串列實現的。主要的功能有push、pop、獲取列表中某個範圍的元素等,儲存的值都是string型別,list因為是雙向連結串列結構,可以作為棧和佇列使用。
set型別
set 型別是一種集合型別,它是無序的不可重複的,set是通過hashTable實現的,因而增刪查詢的複雜度都是O(1),set的操作包括set型別的交併補。
sortedSet型別
sortedSet是一種有序的Set型別,通過指定一個Score屬性作為排序的域,這個域的值可以修改,每次指定score值後,sortedSet會對元素進行排序,因此插入的效率低於set,包括的功能和set型別相似,sortedSet最經常的使用方式應該是作為索引來使用.我們可以把要排序的欄位作為score 儲存,物件的id當元素儲存。
jedis 介紹
jedis是一個用java寫的redis資料庫操作的客戶端,通過jedis,可以很方便的對redis資料庫進行操作,jedis的api的學習成本也很低,原始碼很簡單,有時間的同學可以看一下原始碼,jedis很多對資料庫的操作的方法名都是和redis-cli的API一致,關於redis-cli的API ,常用的有以下:
簡單程式碼演示:
@Test
public void useJedis(){
//建立jedis物件
Jedis jedis = new Jedis("127.0.0.1",6379,5000);
//認證密碼,如果沒有密碼不需要此步
jedis.auth("password");
//選擇資料庫序號
jedis.select(1);
//存值
jedis.set("testStringKey","Hello Redis!");
jedis.hset("testHashKey","msg","Hello Redis too!");
//取值
System.out.println(jedis.get("testStringKey"));
System.out.println(jedis.hget("testHashKey","msg"));
jedis.close();
}
/**
* 使用連線池
*/
@Test
public void useRedisPool(){
JedisPoolConfig config = new JedisPoolConfig();
//設定最大十個連線,具體程式設計需要根據情況配置
config.setMaxTotal(10);
JedisPool jedisPool = new JedisPool(config,"127.0.0.1",
6379,5000,"password");
Jedis jedis = jedisPool.getResource();
//存值
jedis.set("testStringKey","Hello Redis!");
jedis.hset("testHashKey","msg","Hello Redis too!");
//取值
System.out.println(jedis.get("testStringKey"));
System.out.println(jedis.hget("testHashKey","msg"));
/**
* 關閉資源,使用連線池的時候,jedis.close方法對資源的處理並不是釋放,而是歸還連線池
*/
jedis.close();
jedisPool.close();
}
更詳細的jedis的API介紹移步jedis-2.9-doc
相關文章
- Redis學習記錄(二)--使用Jedis連線Redis
- java操作redis。jedis使用apiJavaRedisAPI
- Web - Redis & JedisWebRedis
- Redis(15) jedisRedis
- jedis操作 redisRedis
- [轉載] 使用Redis的Java客戶端JedisRedisJava客戶端
- Jedis使用連線池操作redis叢集Redis
- Spring Boot 中使用 Jedis 來操作 RedisSpring BootRedis
- Redis的概述Redis
- Redis的使用(二)Redis
- redis驅動-jedis實現1Redis
- Redis Ziplist 概述Redis
- Redis筆記2:Jedis連線池Redis筆記
- spring boot使用Jedis整合Redis實現快取(AOP)Spring BootRedis快取
- 【進階篇】Redis實戰之Jedis使用技巧詳解Redis
- 跟我一起學Redis之Redis概述Redis
- Jedis操作單節點redis,叢集及redisTemplate操作redis叢集(一)Redis
- 深入剖析Redis客戶端Jedis的特性和原理Redis客戶端
- redis使用日誌(二) 資料儲存到redisRedis
- 深入剖析Redis系列(四) - Redis資料結構與全域性命令概述Redis資料結構
- Java Redis系列2 (redis的安裝與使用+redis持久化的實現))JavaRedis持久化
- redis 原始碼分析:Jedis 哨兵模式連線原理Redis原始碼模式
- Redis 客戶端 Jedis、lettuce 和 Redisson 對比Redis客戶端
- NoSQL概述和Redis的安裝SQLRedis
- [Redis 系列]redis 學習二Redis
- 【Redis 系列】redis 學習二Redis
- Redis使用與實踐Redis
- Redis 安裝與使用Redis
- redis系列(二)- 語法與命令Redis
- redis快取架構概述Redis快取架構
- Redis筆記3:Jedis連線自動釋放Redis筆記
- 深入剖析Redis系列(二) - Redis哨兵模式與高可用叢集Redis模式
- 【Redis篇】初始Redis與Redis安裝Redis
- 解決使用jedis連線是報DENIED Redis is running in protected mode錯誤Redis
- Redis中PipeLine使用(二)---批量get與批量setRedis
- Redis--Redis的安裝與配置Redis
- Redis(二)--- Redis的底層資料結構Redis資料結構
- Redis 叢集原理與使用Redis