1. 程式人生 > >Redis對字串、Hash(物件)、列表(List)處理的操作命令

Redis對字串、Hash(物件)、列表(List)處理的操作命令

引數說明

在windows下 redis.windows.conf 配置項說明如下:

1. Redis預設不是以守護程序的方式執行,可以通過該配置項修改,使用yes啟用守護程序

    daemonize no

2. 當Redis以守護程序方式執行時,Redis預設會把pid寫入/var/run/redis.pid檔案,可以通過pidfile指定

    pidfile /var/run/redis.pid

3. 指定Redis監聽埠,預設埠為6379,作者在自己的一篇博文中解釋了為什麼選用6379作為預設埠,因為6379在手機按鍵上MERZ對應的號碼,而MERZ取自義大利歌女Alessia Merz的名字

    port 6379

4. 繫結的主機地址

    bind 127.0.0.1

5.當 客戶端閒置多長時間後關閉連線,如果指定為0,表示關閉該功能

    timeout 300

6. 指定日誌記錄級別,Redis總共支援四個級別:debug、verbose、notice、warning,預設為verbose

    loglevel verbose

7. 日誌記錄方式,預設為標準輸出,如果配置Redis為守護程序方式執行,而這裡又配置為日誌記錄方式為標準輸出,則日誌將會發送給/dev/null

logfile stdout

8. 設定資料庫的數量,預設資料庫為0,可以使用SELECT <dbid>命令在連線上指定資料庫id

    databases 16

9. 指定在多長時間內,有多少次更新操作,就將資料同步到資料檔案,可以多個條件配合

    save <seconds> <changes>

    Redis預設配置檔案中提供了三個條件:

    save 900 1

    save 300 10

    save 60 10000

    分別表示900秒(15分鐘)內有1個更改,300秒(5分鐘)內有10個更改以及60秒內有10000個更改。

10. 指定儲存至本地資料庫時是否壓縮資料,預設為yes,Redis採用LZF壓縮,如果為了節省CPU時間,可以關閉該選項,但會導致資料庫檔案變的巨大

    rdbcompression yes

11. 指定本地資料庫檔名,預設值為dump.rdb

    dbfilename dump.rdb

12. 指定本地資料庫存放目錄

    dir ./

13. 設定當本機為slav服務時,設定master服務的IP地址及埠,在Redis啟動時,它會自動從master進行資料同步

    slaveof <masterip> <masterport>

14. 當master服務設定了密碼保護時,slav服務連線master的密碼

    masterauth <master-password>

15. 設定Redis連線密碼,如果配置了連線密碼,客戶端在連線Redis時需要通過AUTH <password>命令提供密碼,預設關閉

    requirepass foobared

16. 設定同一時間最大客戶端連線數,預設無限制,Redis可以同時開啟的客戶端連線數為Redis程序可以開啟的最大檔案描述符數,如果設定 maxclients 0,表示不作限制。當客戶端連線數到達限制時,Redis會關閉新的連線並向客戶端返回max number of clients reached錯誤資訊

    maxclients 128

17. 指定Redis最大記憶體限制,Redis在啟動時會把資料載入到記憶體中,達到最大記憶體後,Redis會先嚐試清除已到期或即將到期的Key,當此方法處理 後,仍然到達最大記憶體設定,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放記憶體,Value會存放在swap區

    maxmemory <bytes>

18. 指定是否在每次更新操作後進行日誌記錄,Redis在預設情況下是非同步的把資料寫入磁碟,如果不開啟,可能會在斷電時導致一段時間內的資料丟失。因為 redis本身同步資料檔案是按上面save條件來同步的,所以有的資料會在一段時間內只存在於記憶體中。預設為no

    appendonly no

19. 指定更新日誌檔名,預設為appendonly.aof

     appendfilename appendonly.aof

20. 指定更新日誌條件,共有3個可選值: 
    no:表示等作業系統進行資料快取同步到磁碟(快) 
    always:表示每次更新操作後手動呼叫fsync()將資料寫到磁碟(慢,安全) 
    everysec:表示每秒同步一次(折衷,預設值)

    appendfsync everysec

21. 指定是否啟用虛擬記憶體機制,預設值為no,簡單的介紹一下,VM機制將資料分頁存放,由Redis將訪問量較少的頁即冷資料swap到磁碟上,訪問多的頁面由磁碟自動換出到記憶體中(在後面的文章我會仔細分析Redis的VM機制)

     vm-enabled no

22. 虛擬記憶體檔案路徑,預設值為/tmp/redis.swap,不可多個Redis例項共享

     vm-swap-file /tmp/redis.swap

23. 將所有大於vm-max-memory的資料存入虛擬記憶體,無論vm-max-memory設定多小,所有索引資料都是記憶體儲存的(Redis的索引資料 就是keys),也就是說,當vm-max-memory設定為0的時候,其實是所有value都存在於磁碟。預設值為0

     vm-max-memory 0

24. Redis swap檔案分成了很多的page,一個物件可以儲存在多個page上面,但一個page上不能被多個物件共享,vm-page-size是要根據儲存的 資料大小來設定的,作者建議如果儲存很多小物件,page大小最好設定為32或者64bytes;如果儲存很大大物件,則可以使用更大的page,如果不 確定,就使用預設值

     vm-page-size 32

25. 設定swap檔案中的page數量,由於頁表(一種表示頁面空閒或使用的bitmap)是在放在記憶體中的,,在磁碟上每8個pages將消耗1byte的記憶體。

     vm-pages 134217728

26. 設定訪問swap檔案的執行緒數,最好不要超過機器的核數,如果設定為0,那麼所有對swap檔案的操作都是序列的,可能會造成比較長時間的延遲。預設值為4

     vm-max-threads 4

27. 設定在向客戶端應答時,是否把較小的包合併為一個包傳送,預設為開啟

    glueoutputbuf yes

28. 指定在超過一定的數量或者最大的元素超過某一臨界值時,採用一種特殊的雜湊演算法

    hash-max-zipmap-entries 64

    hash-max-zipmap-value 512

29. 指定是否啟用重置雜湊,預設為開啟(後面在介紹Redis的雜湊演算法時具體介紹)

    activerehashing yes

30. 指定包含其它的配置檔案,可以在同一主機上多個Redis例項之間使用同一份配置檔案,而同時各個例項又擁有自己的特定配置檔案

    include /path/to/local.conf

Redis字串命令

1. set key value 設定指定 key 的值 ; 2.get key 獲取指定 key的值; 3.getrange  key  start  end  返回key中字串值得子串    從start位置開始 end位置結束 4.getset  key value將給定key的值覆蓋為value,並且返回key的舊值。 5.mget key1[key2....]獲取所有給定key的值。 6.setnx  key value只有在key不存在是設定key的值。 7.strlen  key 返回key所儲存的字串長度。 8.incr key 將key中儲存的數字值增一,每次呼叫都會增加一與資料庫中的自增有點類似。 9.decr key 與incr相反它是講key中儲存的數字值減一。 10.append  key  value如果key已經存在並且已經是一個字串,append命令將value追加到key原來值得末尾。與java中concat方法作用一樣。

Redis 雜湊(Hash)

Redis hash 是一個String型別的屬性和值得對映表,hash特別適合用於儲存物件。 1.hmsetkey  field  'value'  [field  'value'.....]設定指定key的field(屬性)的value值 例子:hmset  user  uname  'zs'  sex  'boy'  age '18'     類似於java中class  user { uname="zs"  sex="boy" age="18" } 2.hgetall key獲取key中所有的欄位名與值。 3.hdel  key  field[field.....]刪除指定key一個或多個雜湊表字段。 4.hexists  key  field判斷key中是否存在指定欄位,如果存在則返回1,反之返回0. 5.hget  key field獲取儲存在key中指定的欄位的值。 6.hgetall  key 獲取儲存在key中所有的欄位和值。 7.hkeyskey獲取key的所有欄位。 8.hmgetkeyfield1[field2]獲取key中所有給定的欄位的值。 9.hsetkeyfield value將key中的欄位field的值設為value。如果存在field欄位值就將其覆蓋,不存在就新增。 10.hvalskey獲取key中所有欄位的值。不獲取欄位。

Redis列表(List)

Redis列表是簡單的字串列表,按照插入順序排序。你可以新增一個元素到列表的頭部(左邊)或者尾部(右邊) 與java中List集合功能是類似的。 1.lpush  key  value在列表的頭部新增一個元素(L表示左邊,R表示右邊)。 2.rpush  key  value在列表的尾部新增一個元素。 3.lindex  key  index通過索引獲取列表中的元素。 4.linsert  key  before|after  pivot  value在列表的元素前或者後插入元素。 5.llen  key 獲取列表的長度。 6.lpop  key 刪除並獲取列表的第一個元素。 7.rpop  key 刪除並獲取列表的最後一個元素。 8.lrange  key start  end獲取列表指定範圍內的元素。(start開始索引,end結束索引)。 9.lrem  key  count  value刪除列表元素。(count表示移除元素的個數,value表示移除的元素)。 10.lset  key  index  value通過索引設定列表元素的值。 11.ltrim  key  start   end對一個列表進行修剪,讓列表只保留指定區間內的元素。不在區間內的元素都將被刪除

Redis的釋出訂閱

Redis的釋出訂閱(pub/sub)是一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。 Redis客戶端可以訂閱任意數量的頻道。很多網站都使用Redis來解決大併發的問題。 1.首先我們建立訂閱頻道名 subscribehello. 2.重新開啟一個redis客戶端,然後在同一個頻道hello釋出訊息 ,訂閱者就能接收到訊息。 publish  hello  "hello redis" 常用命令: 1.psubscribe  pattern[pattern.....]訂閱一個或多個符合給定模式的頻道。 2.pubsub  subcommand  [argument[argument....]]檢視訂閱與釋出系統狀態。 3.publish  channel  message將資訊傳送到指定的頻道。 4.punsubscribe  pattern [pattern] 退訂所有給定模式的頻道。 5.subscribe  channel[channel......]訂閱給定的一個或多個頻道的資訊。 6.unsubscribe  channel[channel......]退訂給定的頻道。

Redis事務

redis事務可以一次執行多個命令,並且帶有一下連個重要保證:
  • 事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端傳送來的命令請求所打斷。
  • 事務是一個原子操作:事務中的命令要麼全部被執行,要麼全部都不執行。
一個事務從開始到執行會經歷以下三個階段:
  • 開始事務。
  • 命令入隊。
  • 執行事務。
Redis以multi開始一個事務,然後將多個命令入隊到事務中,最後又exec命令觸發事務,一併執行事務中所有命令。 事務相關命令: 1.discard 取消事務,放棄執行事務塊內的所有命令。 2.exec 執行所有事務塊內的命令。 3.multi標記一個事務塊的開始。 4.unwatch 取消WATCH命令對所有key的監視。 5.watchkey[key.....]監視一個或多個key,如果在事務執行之前這個key被其他命令所帶動,那麼事務將被打斷。

Redis資料備份與恢復

Redis使用save命令建立當前資料庫的備份。改命令將會在redis安裝目錄建立一個dump.rdb檔案。此檔案就是備份。 如果需要恢復資料,只需要將dump.rdb檔案移動到redis安裝目錄並啟動服務即可。

相關推薦

Redis字串Hash(物件)列表(List)處理操作命令

引數說明 在windows下 redis.windows.conf 配置項說明如下: 1. Redis預設不是以守護程序的方式執行,可以通過該配置項修改,使用yes啟用守護程序     daemonize no 2. 當Redis以守護程序方式執行時,Redis預

複習電商筆記-30-原理hash一致性jedis和Spring整合訪問redis

    原理 在分散式叢集中,對機器的新增刪除,或者機器故障後自動脫離叢集這些操作是分散式叢集管理最基本的功能。如果採用常用的hash(object)%N演算法,那麼在有機器新增或者刪除後,很多原有的資料就無法找到了,這樣嚴重的違反了單調性原則。  

JS 進階(9) ECMAScript6 基礎入門:變數函式解構賦值陣列字串面向物件jsonpromise

一、ES6是啥 ECMAScript 和 JavaScrip的關係 簡單的說ECMA 是一個標準,任何語言都可以去實現這個標準,但目前為止只有javascript 實現了。所以也就預設認為ECMAScript就是javascript。 ECMAScript

java-ArrayList中去重複字串或重複物件LinkedList集合泛型增強for靜態匯入可變引數asList()方法集合巢狀

1、去除ArrayList中重複字串元素方式  * A:案例演示     * 需求:ArrayList去除集合中字串的重複值(字串的內容相同)     * 思路:建立新集合方式     /**     * A:案例演示     * 需求:ArrayList去除集合中字串的重複值(字串的內容相同)     

C#處理Json字串Json物件多層巢狀

1.C#    public partial class WebForm2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {

c字串string物件字串字面值的區別

一、字串字面值 字串字面值是一串常量字元,字串字面值常量用雙引號括起來的零個或多個字元表示,為相容C語言,C++中所有的字串字面值都由編譯器自動在末尾新增一個空字元。 字串沒有變數名字,自身表示自身 "Hello World!" //simple string l

Java中的物件例項控制代碼直接指標的理解

        虛擬機器在建立物件的時候,會優先查詢常量池中是否有該物件的例項,如果沒有則需要載入、解析、初始化class,然後分配記憶體,初始化記憶體,設定物件(HASH CODE 、 GC年代等),最後執行init才算是建立完物件。        物件即例項。     

06: 字典列表hash字典 實現原理

src 過程 關鍵字 順序 根據 ont 對象 val inf 1.1 python中字典對象實現原理    註:字典類型是Python中最常用的數據類型之一,它是一個鍵值對的集合,字典通過鍵來索引,關聯到相對的值,理論上它的查詢復雜度是 O(1)   1、哈希表 (h

Java 006 面向物件(類物件成員變數與區域性變數匿名物件封裝)

知識點梳理 心得體會 小知識點 1.Java面向物件的特徵:封裝、抽象、繼承、多型 2.this關鍵字,對當前類的物件的引用,誰呼叫這個方法,方法中的this就代表誰,一般有this就是成員變數,沒有this就是區域性變數 3.成員方法定義與定義一般方法一樣,但需要去掉st

13_Java面向物件_第13天(staticfinal匿名物件內部類修飾符程式碼塊)_講義

今日內容介紹 1、final 關鍵字 2、static 關鍵字 3、匿名物件 4、內部類 5、包的宣告與訪問 6、訪問修飾符 7、程式碼塊 第1章 final關鍵字 1.1 final的概念 繼承的出現提高了程式碼的複用性,並方便開發。但隨之也有問題,有些類在描述完之後,不想被繼承,或者有些

redis個人理解4--hash物件的儲存

redis的hash的儲存 1.redis-obj基本介紹 眾所周知,redis支援5種基礎資料型別,分別是: string list set hset hash 每種資料型別都存在至少一種encoding方式。redis把上面幾種基礎型別抽象成為一個結構體叫做 redisO

python面向物件中類物件例項物件類變數例項變數類方法例項方法靜態方法

  1. 類物件和例項物件   Python中一切皆物件,Python類本身也是一種物件,類定義完成後,會在當前作用域中定義一個以類名為名字的名稱空間。類物件具有以下兩種操作: 可以通過“類名()”的方式例項化一個物件。  可以通過“類名.類屬性”的方式來訪問一個類屬性。

【js操作dom物件學習筆記五之事件冒泡location物件history物件定時器】

1.總結addEventListener()和attachEvent()的區別      相同點:都可以為元素繫結事件   不同點:1.方法名不一樣          2.引數的個數不一樣addEventListener三個引數,attachEvent兩個引數        

Java學習路程(javaEE)之ServletConfig物件ServletContext物件response和request

一.ServletConfig物件 1.配置資訊需要在web.xml進行配置,是以鍵值對形式配置 key-value,並且在Servlet初始化配置 2.獲取ServletConfig物件 方法一:宣告成員變數儲存ServletConfig public cla

Java學習路程(javaEE)之ServletConfig物件ServletContext物件response 響應和request 請求

一.ServletConfig物件 1.配置資訊需要在web.xml進行配置,是以鍵值對形式配置 key-value,並且在Servlet初始化配置 2.獲取ServletConfig物件 方法一:宣告成員變數儲存ServletConfig public cla

程式碼-JS之建構函式原型物件例項化的關係

/***************** 建構函式、原型物件、例項的關係 ********************/ function A(){ } function B(){ } //指定B的原型物件為A的一個例項 B.prototype = ne

執行環境及作用域變數物件作用域鏈閉包

一:執行環境及作用域 和 變數物件 執行環境是javascript中最為重要的一個概念。每個執行環境都有一個與之關聯的變數物件(儲存執行環境中所有定義的變數和函式)。二: 當代碼在執行環境中執行時,會建立一個作用域鏈。作用域鏈本質是一個指向變數物件的指標列表。

C# 反射詳解:定義建立物件呼叫例項方法及靜態方法

    1、反射的定義及功能介紹:審查元資料並收集關於它的型別資訊的能力。元資料(編譯以後的最基本資料單元)就是一大堆的表,當編譯程式集或者模組時,編譯器會建立一個類定義表,一個欄位定義表,和一個方法定義表等。可能這些說的比較抽象。我再從另一個角度來說:反射是.Net中

詳談樹結構(傳統樹字典樹hashMerkle Patricia Tree)

關於資料結構中樹結構的相關分享 一、傳統的資料結構中的樹結構 樹結構是一種非線性儲存結構,儲存的是具有“一對多”關係的資料元素的集合。 其中,討論較多的是二叉樹。二叉樹的每個結點至多隻有二棵子樹(不存在度大於2的結點),二叉樹的子樹有左右之分,次序不

表的連線方式:NESTED LOOPHASH JOINSORT MERGE JOIN(修改)

表連線方式及使用場合NESTED LOOP 巢狀迴圈連線        由兩個for迴圈組成。不管什麼連線,本演算法都可以使用。連線的兩個關係,分別稱之為外層關係和內層關係,把資料塊數大的關係作為外層關係,小的關係作內層關係。分為塊巢狀迴圈連線(簡單點說,就是把已經放在記