Redis簡單命令(部分示例代碼)

来源:https://www.cnblogs.com/wangshilei/archive/2019/11/29/11958094.html

一、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));
    }
}

 

 

  

 


您的分享是我們最大的動力!

更多相關文章
  • 目的:在VirtualBox中最小化安裝Centos7,記錄下最小化安裝後的相關操作以及安裝的軟體,方便以後再次安裝。 網路配置 設置了兩張網卡, 網卡1 的連接方式 網路地址轉換(NAT) 用於訪問外網, 網卡2 的連接方式 僅主機(Host Only)網路 用於和宿主主機通信。 一般網路配置路徑 ...
  • 典型神經網路模型:(圖片來源:https://github.com/madalinabuzau/tensorflow-eager-tutorials) 保持更新,更多內容請關註 cnblogs.com/xuyaowen; ...
  • 1. Apache Hadoop 1.1 Hadoop介紹 Hadoop是Apache旗下的一個用java語言實現的開源軟體框架, 是一個開發和運行處理大規模數據的軟體平臺. 允許使用簡單的編程模型在大量電腦集群上對大型數據集進行分散式處理. Hadoop不會跟某種具體的行業或者某個具體的業務掛鉤 ...
  • "1. 對日期的操作" "2. 對數字的操作" 1、對日期的操作 2、對數字的操作 ...
  • 下載並解壓MySQL 下載mysql-8.0.17-win64 \https://dev.mysql.com/downloads/mysql/8.0.html // 這裡提供的是8.0以上x64版本 解壓到任意位置,譬如: C:\mysql-8.0.17-winx64 (註意!! 此處的路徑一定要弄 ...
  • 為什麼要優化 系統的吞吐量瓶頸往往出現在資料庫的訪問速度上,即隨著應用程式的運行,資料庫的中的數據會越來越多,處理時間會相應變慢,且數據是存放在磁碟上的,讀寫速度無法和記憶體相比 如何優化 設計資料庫時:資料庫表、欄位的設計,存儲引擎 利用好MySQL自身提供的功能,如索引,語句寫法的調優 MySQL ...
  • 在使用之前,請確認項目已經整合了Redis一、加入依賴 org.springframework.session spring-session-data-redis 二、加入註解在加了@SpringBootApplication註解的類加上以下註解@EnableRedisHttpSession沒了。。... ...
  • Master Note: Troubleshooting guide for Automatic Undo Management (Doc ID 1579081.1) APPLIES TO: Oracle Database - Enterprise Edition - Version 9.2.0.1 ...
一周排行
  • 比如要拆分“呵呵呵90909086676喝喝999”,下麵當type=0返回的是中文字元串“呵呵呵,喝喝”,type=1返回的是數字字元串“90909086676,999”, private string GetStrings(string str,int type=0) { IList<strin ...
  • Swagger一個優秀的Api介面文檔生成工具。Swagger可以可以動態生成Api介面文檔,有效的降低前後端人員關於Api介面的溝通成本,促進項目高效開發。 1、使用NuGet安裝最新的包:Swashbuckle.AspNetCore。 2、編輯項目文件(NetCoreTemplate.Web.c ...
  • 2020 年 7 月 30 日, 由.NET基金會和微軟 將舉辦一個線上和為期一天的活動,包括 微軟 .NET 團隊的演講者以及社區的演講者。本次線上大會 專註.NET框架構建微服務,演講者分享構建和部署雲原生應用程式的最佳實踐、模式、提示和技巧。有關更多信息和隨時瞭解情況:https://focu... ...
  • #abp框架Excel導出——基於vue #1.技術棧 ##1.1 前端採用vue,官方提供 UI套件用的是iview ##1.2 後臺是abp——aspnetboilerplate 即abp v1,https://github.com/aspnetboilerplate/aspnetboilerp ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:碧茂大數據 PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取 input()輸入 Python提供了 input() 內置函數從標準輸入讀入一 ...
  • 從12年到20年,python以肉眼可見的趨勢超過了java,成為了當今It界人人皆知的編程語言。 python為什麼這麼火? 網路編程語言搜索指數 適合初學者 Python具有語法簡單、語句清晰的特點,這就讓初學者在學習階段可以把精力集中在編程對象和思維方法上。 大佬都在用 Google,YouT ...
  • 在社會上存在一種普遍的對培訓機構的學生一種歧視的現象,具體表現在,比如:當你去公司面試的時候,一旦你說了你是培訓機構出來的,那麼基本上你就涼了,那麼你瞞著不說,然後又通過了面試成功入職,但是以後一旦在公司被髮現有培訓經歷,可能會面臨被降薪,甚至被辭退,培訓機構出來的學生,在用人單位眼裡就是能力低下的 ...
  • from typing import List# 這道題看了大佬寫的代碼,經過自己的理解寫出來了。# 從最外圍的四周找有沒有為O的,如果有的話就進入深搜函數,然後深搜遍歷# 判斷上下左右的位置是否為Oclass Solution: def solve(self, board: List[List[s ...
  • import requests; import re; import os; # 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, li ...
  • import requests; import re; import os; import parsel; 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537. ...