一、redis檔案夾下的可執行檔案(文章尾部有示例代碼)
|
可執行檔案 |
作用 |
|
redis-server |
啟動redis |
|
redis-cli |
redis命令列工具 |
|
redis-benchmark |
基準測驗工具 |
|
redis-check-aof |
AOP持久化檔案檢測工具和修復工具 |
|
redis-check-dump |
RDB持久化檔案檢測工具和修復工具 |
|
redis-sentinel |
啟動redis-sentinel |
二、可以使用兩種方式連redis服務器
- 第一種:互動式方式
- $redis-cli -h 127.0.0.1 -p 6379
- set hello world
- get hello
- 第二種:命令方式
- get hello
三、常用命令
1、連接只剩相關的命令
- 默認直接連接 遠程連接 -h 192.168.1.20 -p 6379
- ping:測驗連接是否存活,如果正常會回傳pong
- echo:列印
- select:切換到指定的資料庫,資料庫存索引號index用數字值指定,以0作為起始索引值
- quit:關閉連接
- auth:簡單密碼認證
2、服務器端相關命令
- time:回傳當前服務器時間
- client list: 回傳所有連接到服務器的客戶端資訊和統計資料 參見http://redisdoc.com/server/client_list.html
- client kill ip:port:關閉地址為
ip:port的客戶端 - save:將資料同步保存到磁盤
- bgsave:將資料異步保存到磁盤
- lastsave:回傳上次成功將資料保存到磁盤的Unix時戳
- shundown:將資料同步保存到磁盤,然后關閉服務
- info:提供服務器的資訊和統計
- config resetstat:重置info命令中的某些統計資料
- config get:獲取組態檔資訊
- config set:動態地調整 Redis 服務器的配置(configuration)而無須重啟,可以修改的配置引數可以使用命令 CONFIG GET * 來列出
- config rewrite:Redis 服務器時所指定的
redis.conf檔案進行改寫 - monitor:實時轉儲收到的請求
- slaveof:改變復制策略設定
3、發布訂閱相關命令
- psubscribe:訂閱一個或多個符合給定模式的頻道 例如psubscribe news.* tweet.*
- publish:將資訊
message發送到指定的頻道channel例如publish msg "good morning" - pubsub channels:列出當前的活躍頻道 例如PUBSUB CHANNELS news.i*
- pubsub numsub:回傳給定頻道的訂閱者數量 例如PUBSUB NUMSUB news.it news.internet news.sport news.music
- pubsub numpat:回傳客戶端訂閱的所有模式的數量總和
- punsubscribe:指示客戶端退訂所有給定模式,
- subscribe:訂閱給定的一個或多個頻道的資訊,例如 subscribe msg chat_room
- unsubscribe:指示客戶端退訂給定的頻道,
4、對key操作的命令
- exists(key):確認一個key是否存在
- del(key):洗掉一個key
- type(key):回傳值的型別
- keys(pattern):回傳滿足給定pattern的所有key
- randomkey:隨機回傳key空間的一個
- keyrename(oldname, newname):重命名key
- dbsize:回傳當前資料庫中key的數目
- expire:設定一個key的活動時間(s)
- ttl:獲得一個key的活動時間
- move(key, dbindex):移動當前資料庫中的key到dbindex資料庫
- flushdb:洗掉當前選擇資料庫中的所有key
- flushall:洗掉所有資料庫中的所有key
5、對String操作的命令
- set(key, value):給資料庫中名稱為key的string賦予值value
- get(key):回傳資料庫中名稱為key的string的value
- getset(key, value):給名稱為key的string賦予上一次的value
- mget(key1, key2,…, key N):回傳庫中多個string的value
- setnx(key, value):添加string,名稱為key,值為value
- setex(key, time, value):向庫中添加string,設定過期時間time
- mset(key N, value N):批量設定多個string的值
- msetnx(key N, value N):如果所有名稱為key i的string都不存在
- incr(key):名稱為key的string增1操作
- incrby(key, integer):名稱為key的string增加integer
- decr(key):名稱為key的string減1操作
- decrby(key, integer):名稱為key的string減少integer
- append(key, value):名稱為key的string的值附加value
- substr(key, start, end):回傳名稱為key的string的value的子串
6、對list操作的命令
- rpush(key, value):在名稱為key的list尾添加一個值為value的元素
- lpush(key, value):在名稱為key的list頭添加一個值為value的 元素
- llen(key):回傳名稱為key的list的長度
- lrange(key, start, end):回傳名稱為key的list中start至end之間的元素
- ltrim(key, start, end):截取名稱為key的list
- lindex(key, index):回傳名稱為key的list中index位置的元素
- lset(key, index, value):給名稱為key的list中index位置的元素賦值
- lrem(key, count, value):洗掉count個key的list中值為value的元素
- lpop(key):回傳并洗掉名稱為key的list中的首元素
- rpop(key):回傳并洗掉名稱為key的list中的尾元素
- blpop(key1, key2,… key N, timeout):lpop命令的block版本,
- brpop(key1, key2,… key N, timeout):rpop的block版本,
- rpoplpush(srckey, dstkey):回傳并洗掉名稱為srckey的list的尾元素,并將該元素添加到名稱為dstkey的list的頭部
7、對Set操作的命令
- sadd(key, member):向名稱為key的set中添加元素member
- srem(key, member) :洗掉名稱為key的set中的元素member
- spop(key) :隨機回傳并洗掉名稱為key的set中一個元素
- smove(srckey, dstkey, member) :移到集合元素
- scard(key) :回傳名稱為key的set的基數
- sismember(key, member) :member是否是名稱為key的set的元素
- sinter(key1, key2,…key N) :求交集
- sinterstore(dstkey, (keys)) :求交集并將交集保存到dstkey的集合
- sunion(key1, (keys)) :求并集
- sunionstore(dstkey, (keys)) :求并集并將并集保存到dstkey的集合
- sdiff(key1, (keys)) :求差集
- sdiffstore(dstkey, (keys)) :求差集并將差集保存到dstkey的集合
- smembers(key) :回傳名稱為key的set的所有元素
- srandmember(key) :隨機回傳名稱為key的set的一個元素
8、對Hash操作的命令
- hset(key, field, value):向名稱為key的hash中添加元素field
- hget(key, field):回傳名稱為key的hash中field對應的value
- hmget(key, (fields)):回傳名稱為key的hash中field i對應的value
- hmset(key, (fields)):向名稱為key的hash中添加元素field
- hincrby(key, field, integer):將名稱為key的hash中field的value增加integer
- hexists(key, field):名稱為key的hash中是否存在鍵為field的域
- hdel(key, field):洗掉名稱為key的hash中鍵為field的域
- hlen(key):回傳名稱為key的hash中元素個數
- hkeys(key):回傳名稱為key的hash中所有鍵
- hvals(key):回傳名稱為key的hash中所有鍵對應的value
- hgetall(key):回傳名稱為key的hash中所有的鍵(field)及其對應的value
四、示例代碼(部分方法的示例,后續會補全)
public class MyRedis { // 連接物件 localhost 為本機 如果是遠程連接換位IP 6379是埠號 private Jedis jedis = new Jedis("localhost", 6379); /** * 測驗連接 */ @Test public void myTest1() { System.out.println(jedis.ping()); jedis.set("hello", "第一個string"); System.out.println(jedis.get("hello")); jedis.close(); } /** * 操作String */ @Test public void test_String() { jedis.flushAll(); // 獲取Jedis物件 // 添加一條資料 jedis.set("name", "王世磊"); // 根據key找到對應的value的值 System.out.println(jedis.get("name")); // 多次對key進行設定值,則最后一次會覆寫之前的值(沒有類似update) // 字串拼接 jedis.append("name", "很帥"); System.out.println(jedis.get("name")); // 洗掉某個鍵 jedis.set("p3", "4"); jedis.del("p3"); // 同時設定多個鍵值對:獲取值的方式同上 jedis.mset("m1", "1", "m2", "2", "m3", "3", "m4", "4", "m5", "5", "m6", "6", "m7", "7", "m8", "8"); System.out.println(jedis.mget("m1", "m2", "m3", "m4", "m5", "m6", "m7", "m8").toString()); // 假如值里面有數字(字串形式),可以進行+1的操作(incr) jedis.set("n1", "1"); jedis.incr("n1"); System.out.println(jedis.get("n1")); // 進行-1的操作(decr) jedis.decr("n1"); System.out.println(jedis.get("n1")); // 某個值增加多少(incrBy) jedis.set("p2", "4"); jedis.incrBy("p2", 5); System.out.println(jedis.get("p2")); // 某個值減少多少(decrBy) jedis.incrBy("p2", 2); System.out.println(jedis.get("p2")); // 判斷是否存在某個key(exists) System.out.println(jedis.exists("a1")); System.out.println(jedis.exists("p1")); // 設定值的時間:存在5s(setex) jedis.setex("s1", 5, "4"); // 查詢值的存活時間:當 key不存在時,回傳 -2,當key存在但沒有設定剩余生存時間時,回傳-1, jedis.setex("s2", 200, "4"); jedis.set("s3", "4"); // 當key存在且設定有存活時間 以秒為單位,回傳key的剩余生存時間(ttl) System.out.println(jedis.ttl("s2")); // 當key不存在 System.out.println(jedis.ttl("s100")); // 當key存在 但是沒有設定存活時間 System.out.println(jedis.ttl("s3")); // 去掉key的時間設定:不再有失效時間(persist) jedis.persist("s2"); System.out.println(jedis.ttl("s2")); // 關閉連接 jedis.close(); } /** * 操作List */ @Test public void test_List() { jedis.flushAll(); // 保存資料:lpush-->left push jedis.lpush("l1", "資料1", "資料2", "資料3"); // 查詢:第一個值是key,第二個值表示從0開始,第三個值表示結束(-1表示取全部)(lrange) System.out.println(jedis.lrange("l1", 0, -1)); // userListA當中的值排列情況:["Kevin Durant","stephen curry","kobe bryant","king james"] // 保存資料:rpush-->right push jedis.rpush("userListA", "Kevin Durant", "stephen curry", "kobe bryant", "king james"); // 查詢:第一個值是key,第二個值表示從0開始,第三個值表示結束(-1表示取全部) System.out.println(jedis.lrange("userListA", 0, -1)); /* * userListB當中值排列情況:["Kevin Durant","stephen curry","kobe bryant","king * james","Wilt Chamberlain","John Smith","Karl Malone"] */ jedis.rpush("userListB", "Kevin Durant", "stephen curry", "kobe bryant", "king james", "Wilt Chamberlain", "John Smith", "Karl Malone"); // 移除并回傳串列key的頭元素:lpop-->left pop System.out.println(jedis.lpop("userListB")); // 移除并回傳串列key的尾元素:rpop-->right pop System.out.println(jedis.rpop("userListB")); // 洗掉key jedis.del("l1"); System.out.println(jedis.get("l1")); // 查詢特定位置的值:idnex從0開始(lindex) System.out.println(jedis.lindex("userListA", 1)); // 對list進行裁剪:只保留下標1-3的值,其他的全部洗掉,下標從0開始(ltrim) System.out.println(jedis.ltrim("userListA", 1, 3)); System.out.println(jedis.lrange("userListA", 0, -1)); // 根據引數count的值,移除串列中與引數value相等的元素, jedis.rpush("list1", "1", "1", "1", "1", "1", "2", "3", "4", "5", "6", "7", "8"); System.out.println(jedis.lrange("list1", 0, -1)); jedis.lrem("list1", 3, "1"); System.out.println(jedis.lrange("list1", 0, -1)); // lrem(key, count, value):洗掉count個key的list中值為value的元素 jedis.rpush("list2", "1", "1", "3", "1", "1", "2", "3", "2", "3", "3", "4", "3", "5", "3", "1", "4", "2", "6", "7", "5"); // lpop(key):回傳并洗掉名稱為key的list中的首元素 jedis.lpop("list2"); System.out.println(jedis.lrange("list2", 0, -1)); // rpop(key):回傳并洗掉名稱為key的list中的尾元素 jedis.rpop("list2"); System.out.println(jedis.lrange("list2", 0, -1)); // 從users的右邊彈出一個元素,把該元素左插入到players串列當中(rpoplpush) jedis.rpoplpush("list2", "list2"); System.out.println(jedis.lrange("list2", 0, -1)); }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/2517.html
標籤:其它
