一、redis文件夾下的可執行文件(文章尾部有示例代碼) 可執行文件 作用 redis-server 啟動redis redis-cli redis命令行工具 redis-benchmark 基準測試工具 redis-check-aof AOP持久化文件檢測工具和修複工具 redis-check-d ...
一、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)); }
}