1. 程式人生 > >Jedis使用中的幾個概念

Jedis使用中的幾個概念

轉載請註明出處

這兩天隨便玩了一下Jedis,初步瞭解了一下其中的幾個概念,記錄一下.

1.資料組織方式

1.資料庫

Redis中預設設定了16個數據庫,編號為0~15,可以通過修改配置檔案來修改資料庫個數.可以使用select(databaseNo)方法來選擇使用的資料庫.

2.資料夾

Redis的Key中使用冒號作為分隔符,在RedisDesktopManager中檢視可以看到分級的資料夾.需要注意的是,這種方式只有在客戶端中檢視才能看到分級效果,實際的Key並沒有變化.

3.HSET

HSET的儲存方式可以在一個Key中儲存一組Key-Value.

以上三種方式組合,可以將資料逐層分級,方便儲存和查詢.下面是一個例子:

Jedis jedis = new Jedis("192.168.20.252");
jedis.select(1);

jedis.hset("movie:war:Fury", "score", "7.6");
jedis.hset("movie:war:Fury", "website", "http://www.imdb.com/title/tt2713180");
jedis.hset("movie:war:Fury", "Director", "David Ayer");
jedis.hset("movie:war:Fury", "Writer", "David Ayer");

jedis.hset("movie:war:BlackHawkDown", "score", "7.7");
jedis.hset("movie:war:BlackHawkDown", "website", "http://www.imdb.com/title/tt0265086");
jedis.hset("movie:war:BlackHawkDown", "Director", "Ridley Scott");
jedis.hset("movie:war:BlackHawkDown", "Writer", "Mark Bowden");

jedis.hset("movie:action:TheRundown", "score", "6.7");
jedis.hset("movie:action:TheRundown", "website", "http://www.imdb.com/title/tt0327850");
jedis.hset("movie:action:TheRundown", "Director", "Peter Berg");
jedis.hset("movie:action:TheRundown", "Writer", "R.J. Stewart");

jedis.hset("music:pop:FuckinPerfect", "length", "3:33");
jedis.hset("music:pop:FuckinPerfect", "size", "8.5M");

儲存後的效果如下:
redis資料夾

2.Jedis連線方式

使用Jedis連線Redis伺服器有三種方式:Jedis/JedisPool,ShardedJedis/ShardedJedisPool,JedisCluster,分別對應了伺服器的不同部署方式.

1.使用Jedis/JedisPool連線

這種方式針對單個Redis伺服器建立連線,Jedis是單個連線,JedisPool即Jedis連線池,為了優化連線效能而生.

2.使用ShardedJedis/ShardedJedisPool連線

這種方式可以連線互不相通的一組Redis伺服器.即Redis伺服器因為資料量太大在資料上進行了水平拆分,但是伺服器間並不通訊,也沒有副本備份.同樣的道理,ShardedJedisPool是針對ShardedJedis單個連線所做的優化.

3.使用JedisCluster連線

使用這種方式時,預設Redis已經進行了叢集處理,JedisCluster即針對整個叢集的連線.

上述三種方式的對比如下:
JedisConnection