7.jedis操作redis
阿新 • • 發佈:2018-11-22
jedis操作redis
Author:SimpleWu
Jedis介紹
Jedis是Redis官方推薦的的Java客戶端開發包。
官方:https://github.com/xetorthio/jedis
使用
匯入依賴:
<dependencies> <!-- redis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> </dependencies>
使用jedis連結redis非常簡單:
//Jedis jedis = new Jedis(host, port)
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("如果是pong爆炸就連結成功 :" + jedis.ping());
如果redis設定了密碼必須要授權:
jedis.auth("password"); //如果設定密碼,要授權
key鍵api
命令 | 描述 |
---|---|
DEL key [key ...] | 刪除指定的一批keys,如果刪除中的某些key不存在,則直接忽略。 |
DUMP key | 序列化給定 key ,並返回被序列化的值。 |
EXISTS key [key ...] | 返回key是否存在。1表示存在,0表示不存在。 |
EXPIRE key seconds | 設定key的過期時間,超過時間後,將會自動刪除該key。 |
EXPIREAT key timestamp | EXPIREAT 的作用和 EXPIRE類似,都用於為 key 設定生存時間。不同在於 EXPIREAT 命令接受的時間引數是 UNIX 時間戳 Unix timestamp 。 |
KEYS pattern | 查詢所有符合給定模式pattern(正則表示式)的 key 。 |
MOVE key db | 將當前資料庫的 key 移動到給定的資料庫 db 當中。 |
TTL key | 返回key剩餘的過期時間。 |
TYPE key | 返回key所儲存的value的資料結構型別,它可以返回string, list, set, zset 和 hash等不同的型別。 |
String鍵api
命令 | 描述 |
---|---|
DEL key [key ...] | 刪除指定的一批keys,如果刪除中的某些key不存在,則直接忽略。 |
DUMP key | 序列化給定 key ,並返回被序列化的值。 |
EXISTS key [key ...] | 返回key是否存在。1表示存在,0表示不存在。 |
EXPIRE key seconds | 設定key的過期時間,超過時間後,將會自動刪除該key。 |
EXPIREAT key timestamp | EXPIREAT 的作用和 EXPIRE類似,都用於為 key 設定生存時間。不同在於 EXPIREAT 命令接受的時間引數是 UNIX 時間戳 Unix timestamp 。 |
KEYS pattern | 查詢所有符合給定模式pattern(正則表示式)的 key 。 |
MOVE key db | 將當前資料庫的 key 移動到給定的資料庫 db 當中。 |
TTL key | 返回key剩餘的過期時間。 |
TYPE key | 返回key所儲存的value的資料結構型別,它可以返回string, list, set, zset 和 hash等不同的型別。 |
Hash雜湊api
指令 | 描述 |
---|---|
HSET key field value | 將雜湊表 key 中的欄位 field 的值設為 value 。 |
HSET key field value | 將雜湊表 key 中的欄位 field 的值設為 value 。 |
HGET key field | 獲取儲存在雜湊表中指定欄位的值。 |
HMSET key field1 value1 [field2 value2 ] | 同時將多個 field-value (域-值)對設定到雜湊表 key 中。 |
HMGET key field1 [field2] | 獲取所有給定欄位的值 |
HGETALL key | 獲取在雜湊表中指定 key 的所有欄位和值 |
HDEL key field1 [field2] | 刪除一個或多個雜湊表字段 |
HEXISTS key field | 檢視雜湊表 key 中,指定的欄位是否存在 |
HKEYS key | 獲取所有雜湊表中的欄位 |
HLEN key | 獲取雜湊表中欄位的數量 |
HSETNX key field value | 只有在欄位 field 不存在時,設定雜湊表字段的值 |
HVALS key | 獲取雜湊表中所有值 |
@Test
public void test2(){
Map<String, String> map = new HashMap<>();
map.put("name", "SimpleWu");
map.put("email", "[email protected]");
//同時將多個field-value對設定到雜湊表key中
jedis.hmset("info", map);
//獲取所有給定欄位的值
List<String> list = jedis.hmget("info", "email");
for (String string : list) {
System.out.println(string);
}
System.out.println("獲取數量:" + jedis.hlen("info"));
jedis.hdel("info", "name");
System.out.println("獲取數量:" + jedis.hlen("info"));
}
list集合api
指令 | 描述 |
---|---|
LPUSH key value1 [value2] | 將一個或多個值插入到列表頭部 |
RPUSH key value1 [value2] | 將一個或多個值插入到列表尾部 |
LRANGE key start stop | 獲取列表指定範圍內的元素 |
LPOP key | 移出並獲取列表的第一個元素 |
RPOP key | 移除並獲取最後一個元素 |
LINDEX key index | 通過索引獲取列表中的元素 |
LLEN key | 獲取列表長度 |
LTRIM key start stop | 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除 |
LREM key | 移除列表元素 |
LSET key index value | 通過索引設定列表元素的值 |
LINSERT key BEFORE|AFTER pivot value | 在列表的元素前或者後插入元素 |
@Test
public void test3(){
//將一個或多個值插入到列表頭部
jedis.lpush("list", new String[]{"list1","list2","list3"});
//通過索引獲取列表中的元素
System.out.println(jedis.lindex("list",1));
//獲取列表指定範圍內的元素
List<String> list = jedis.lrange("list", 0, 1);
for (String string : list) {
System.out.println(string);
}
}
Set集合的API
指令 | 描述 |
---|---|
SADD key member1 [member2] | 向集合新增一個或多個成員 |
SCARD key | 獲取集合的成員數 |
SMEMBERS key | 返回集合中的所有成員 |
SISMEMBER key member | 判斷 member 元素是否是集合 key 的成員 |
SREM key member1 [member2] | 移除集合中一個或多個成員 |
SRANDMEMBER key [count] | 返回集合中一個或多個隨機數 |
SPOP key | 移除並返回集合中的一個隨機元素 |
SMOVE source destination member | 將 member 元素從 source 集合移動到 destination 集合 |
指令 | 描述 |
---|---|
SDIFF key1 [key2] | 返回給定所有集合的差集,在第一個set裡面而不在第二個set裡面的項。 |
SDIFFSTORE destination key1 [key2] | 返回給定所有集合的差集並存儲在 destination 中 |
SINTER key1 [key2] | 返回給定所有集合的交集,在第一個個set裡面也在第二個set裡面。 |
SINTERSTORE destination key1 [key2] | 返回給定所有集合的交集並存儲在 destination 中 |
SUNION key1 [key2] | 返回所有給定集合的並集,將第一個set裡面和第二個set裡面的元素去重併合並。 |
SUNIONSTORE destination key1 [key2] | 所有給定集合的並集儲存在 destination 集合中 |
SSCAN key cursor [MATCH pattern][COUNT count] | 迭代集合中的元素 |
Zset集合的API
指令 | 描述 |
---|---|
ZADD key score1 member1 [score2 member2] | 向有序集合新增一個或多個成員,或者更新已存在成員的分數 |
ZRANGE key start stop [WITHSCORES] | 通過索引區間返回有序集合成指定區間內的成員 |
ZRANGEBYSCORE key min max [WITHSCORES][LIMIT] | 通過分數返回有序集合指定區間內的成員 |
ZREM key member [member ...] | 移除有序集合中的一個或多個成員 |
ZREMRANGEBYLEX key min max | 移除有序集合中給定的字典區間的所有成員 |
ZCARD key | 獲取有序集合的成員數 |
ZCOUNT key min max | 計算在有序集合中指定區間分數的成員數 |
ZREVRANK key member | 返回有序集合中指定成員的排名,有序整合員按分數值遞減(從大到小)排序 |
ZSCORE key member | 返回有序集中,成員的分數值 |
ZREVRANGE key start stop [WITHSCORES] | 返回有序集中指定區間內的成員,通過索引,分數從高到底 |
ZREVRANGEBYSCORE key max min [WITHSCORES] | 返回有序集中指定分數區間內的成員,分數從高到低排序 |
ZSCAN key cursor [MATCH pattern][COUNT count] | 迭代有序集合中的元素(包括元素成員和元素分值) |
Jedis的事務
指令 | 描述 |
---|---|
DISCARD | 取消事務,放棄執行事務內所有命令 |
EXEC | 執行所有事務塊內的命令。 |
MULTI | 標記一個事務塊的開始 |
UNWATCCH | 取消WATCH命令對所有key的監視。 |
WATCH key[key...] | 監視一個(或多個)key,如果在事務執行之前這個(或這些)key被其他命令所改動,那麼事務將被打斷。 |
@Test
public void test4(){
//開啟事務
Transaction tx = jedis.multi();
//新增指令到佇列中
tx.set("name", "SimpleWu");
tx.set("email", "[email protected]");
//執行指令
List<Object> execs = tx.exec();
for (Object object : execs) {
System.out.println(object);
}
//取消指令
//String discard = tx.discard();
//System.out.println(discard);
System.out.println(jedis.get("name"));
}
Jedis的連線池
@Test
public void test5(){
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 最大空閒連線數, 預設8個
poolConfig.setMaxIdle(10);
// 最小空閒連線數, 預設0
poolConfig.setMinIdle(0);
// 最大連線數, 預設8個
poolConfig.setMaxTotal(100);
// 獲取連線時的最大等待毫秒數(如果設定為阻塞時BlockWhenExhausted),
// 如果超時就拋異常,小於零:阻塞不確定的時間,
// 預設-1
poolConfig.setMaxWaitMillis(-1);
// 在獲取連線的時候檢查有效性, 預設false
poolConfig.setTestOnBorrow(false);
}