Redis基本命令的一些細節

1、批量刪除鍵

Redis的DEL不支持通配符,可是能夠結合Linux的管道和xargs命令本身實現刪除全部符合規則的鍵,好比刪除全部符合「test:」開頭的鍵,能夠執行:redis

redis-cli KEYS "test:*" | xargs redis-cli DEL

2、建立鍵的規範

Redis對於鍵的名稱並無強制的要求,比較好的實踐是「對象類型:對象ID:對象屬性",例如"user:1:friends",對於符合單詞推薦用"."分割。bash

爲了節約存儲空間,也可使用"u:1:f"來表示"user:1:friends",可是這部分的節約不如可讀性重要。數據結構

3、String類型的簡單記錄

通常場景:spa

  • 自增能夠作計數器;
  • 生成自增ID(不經常使用);
  • 存儲數據;

不經常使用的功能還有:code

  • 增長/減小指定的整數/浮點數;
  • 向字符串尾部添加內容;
  • 獲取字符串長度;
  • 一次設置/獲取多個鍵(MSET/MGET);
  • 位操做;

4、Hash類型的簡單記錄

除了Hash,Redis其餘的數據結構還不支持數據類型嵌套。對象

通常場景:排序

  • 存儲一個對象,itemKey爲屬性名,itemValue爲屬性值;
  • 將多個計數器記錄在一個Hash中;

不經常使用的功能:索引

  • 只獲取itemKey或者itemValue(HKEYS);
  • 獲取字段數量(HLEN);

5、List類型的簡單記錄;

List內部使用雙向鏈表實現的。雙端添加元素的時間複雜度是O(1)。ip

通常場景:字符串

  • 存儲對象ID;
  • 進行分頁查詢;

不經常使用的功能:

  • 得到/設置指定索引位置的元素值(LINDEX/LSET);
  • 裁剪成指定判斷(LTRIM);
  • 向列表中插入元素(LINSERT);
  • 列表轉移,從右邊彈出寫入左邊(RPOPLPUSH);

6、Set類型的簡單記錄

無序集合,能保存2^32-1個字符串。集合內部使用散列表實現,操做的時間複雜度是O(1)。多個集合之間能夠求並集,交集,差集。

 通常場景:

  • 存儲tags;
  • 作一些互相關注的場景;

不經常使用的功能:

  • 得到集合中元素的個數(SCARD);
  • 進行集合運算並將結果存儲(SDIFFSTORE/SINTERSTORE/SUNIONSTORE);
  • 隨機得到集合中的元素(SRANDMEMBER);
  • 從集合中彈出一個元素(SPOP);

7、ZSet類型的簡單記錄

有序集合是使用散列表和跳躍表(Skip list)實現的,讀取的時間複雜度是O(log(N))。 範圍讀取的時間複雜度是O(log n+m)。n是集合的基數,m是返回的元素數量。

  通常場景:

  • 存儲排行榜;
  • 存儲點擊量排序;
  • 按修改時間排序;

不經常使用的功能:

  • 獲取元素個數(ZCARD) ;
  • 獲取指定分數範圍內的元素個數(ZCOUNT);
  • 刪除一個或多個元素(ZREM);
  • 按排名範圍刪除元素(ZREMRANGEBYRANK);
  • 按分數範圍刪除元素(ZREMRANGEBYSCORE);
  • 得到元素的排名(ZRANK/ZREVRANK);
  • 計算有序集合的交集(ZINTERSTORE);

8、地理位置的簡單記錄

暫無。

相關文章
相關標籤/搜索