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 ...
一周排行
  • C#實現(Delegate)的委托就不多說了,直接上代碼,看代碼中的註釋: namespace Delegate { delegate void DGSayiHi(string name);//聲明委托 delegate void DGDo(string name); class Program { ...
  • C#實現的從小到大的冒泡排序: public void BubbleSort(int[] array) { int length = array.Length; for (int i = 0; i < length - 1; i++) { for (int j = length - 1; j > i ...
  • string aa = DateTime.Now.ToShortDateString();//"2019/9/23" string bb = DateTime.Now.ToShortTimeString();//"上午 10:21" string ff = DateTime.Now.ToLongDa ...
  • 1. 什麼是,以及怎麼用畫中畫 Windows 10 Creators Update以後UWP提供了一個新的視圖模式CompactOverlay,中文翻譯成 緊湊的覆蓋層 ?反正大部分時間我們都會稱它為 畫中畫模式 。 上圖中右上角即為進入畫中畫模式的微軟“電影和電視”應用。 可以調用 "Appli ...
  • C#實現的對兩個Table進行Merge,兩表必須存在至少一個公共欄位作為連接項,否則連接就失去了意義。如下是對兩個table進行Merge的詳細代碼: private void button1_Click(object sender, EventArgs e)//Button點擊觸發事件 { #r ...
  • 在很多時候,我們做一些非常規化的界面的時候,往往需要創建一些用戶控制項,在其中繪製好一些基礎的界面塊,作為後續重覆使用的一個單元,用戶控制項同時也可以封裝處理一些簡單的邏輯。在開發Winform各種類型項目,我都時不時需要定製一些特殊的用戶控制項,以方便在界面模塊中反覆使用。我們一般是在自定義的用戶控制項里... ...
  • 第一部分:面向對象 封裝 繼承(里氏轉換) 多態第二部分:值類型、引用類型、字元串操作第三部分:集合文件操作第四部分:正則表達式第五部分:XML操作第六部分:委托、事件第七部分:反射。 //存儲著我們當前正在運行的進程//Process[] pro = Process.GetProcesses(); ...
  • 程式處理存放圖片的幾種方式 我的理解有4個: 1:放在項目本身得文件夾中,直接部署到伺服器上 2:存放在磁碟中,然後資料庫中存放路徑,讀取得時候傳路徑。這個適合小項目 3:將圖片轉換成二進位文件,但是不建議這樣做,因為會給資料庫造成壓力。 4:存放在雲存儲器上,也是在資料庫上存地址,不過是雲地址,使 ...
  • 什麼是AutoMapper?AutoMapper是一個簡單的小型庫,用於解決一個看似複雜的問題 - 擺脫將一個對象映射到另一個對象的代碼。這種類型的代碼是相當沉悶和無聊的寫,所以為什麼不發明一個工具來為我們做? 我們來看看在.netcore3.1中怎樣使用AutoMapper9.0。 Profile ...
  • Teigha中實體旋轉 代碼: using (var trans = database.TransactionManager.StartTransaction()) { Entity ent = trans.GetObject(entityId, OpenMode.ForWrite) asEntit ...
x