(二)Redis 筆記——發布&訂閱、事務、資料庫操作

來源:互聯網
上載者:User

標籤:使用   語句   roo   用戶端   size   基本文法   exe   儲存   val   

1. Redis 發布訂閱

1.1 概述

Redis 發布訂閱(pub/sub)是一種訊息通訊模式:寄件者(pub)發送訊息,訂閱者(sub)接收訊息。

Redis 用戶端可以訂閱任意數量的頻道。

展示了頻道 channel1 , 以及訂閱這個頻道的三個用戶端 —— client2 、 client5 和 client1 之間的關係:

當有新訊息通過 PUBLISH 命令發送給頻道 channel1 時, 這個訊息就會被發送給訂閱它的三個用戶端:

1.2 步驟:

1.2.1.  建立了訂閱頻道名為 redisChat:

127.0.0.1:6379> SUBSCRIBE redisChatReading messages... (press Ctrl-C to quit)1) "subscribe"2) "redisChat"3) (integer) 1

1.2.2.  重新開啟個 redis 用戶端,然後在同一個頻道 redisChat 發布兩次訊息,訂閱者就能接收到訊息。

[[email protected] 案頭]# redis-cli127.0.0.1:6379> PUBLISH redisChat "Redis is very useful"(integer) 1127.0.0.1:6379> PUBLISH redisChat "learn Redis is neccessary"(integer) 1

1.2.3. 訂閱者的用戶端自動出現內容

127.0.0.1:6379> SUBSCRIBE redisChatReading messages... (press Ctrl-C to quit)1) "subscribe"2) "redisChat"3) (integer) 1#訂閱者的用戶端出現如下內容1) "message"2) "redisChat"3) "Redis is very useful"1) "message"2) "redisChat"3) "learn Redis is neccessary"

2. Redis 事務

Redis 事務可以一次執行多個命令, 並且帶有以下兩個重要的保證:

  • 事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他用戶端發送來的命令請求所打斷。
  • 事務是一個原子操作:事務中的命令要麼全部被執行,要麼全部都不執行。

一個事務從開始到執行會經曆以下三個階段:

  • 開始事務。
  • 命令入隊。
  • 執行事務。

以下是一個事務的例子, 它先以 MULTI 開始一個事務, 然後將多個命令入隊到事務中, 最後由 EXEC 命令觸發事務, 一併執行事務中的所有命令:

127.0.0.1:6379> MULTIOK127.0.0.1:6379> set name "xiaofeng"QUEUED127.0.0.1:6379> get nameQUEUED127.0.0.1:6379> sadd girlfriends "Jenny" "Amy" "lily"QUEUED127.0.0.1:6379> SMEMBERS girlfriendsQUEUED127.0.0.1:6379> EXEC1) OK2) "xiaofeng"3) (integer) 34) 1) "Jenny"   2) "Amy"   3) "lily"
3. Redis指令碼

Redis 指令碼使用 Lua 解譯器來執行指令碼。執行指令碼的常用命令為 EVAL。基本文法

EVAL script numkeys key [key ...] arg [arg ...]
127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second1) "key1"2) "key2"3) "first"4) "second"

4. 資料備份與恢複

資料備份

127.0.0.1:6379> save 
OK

改命令會在redis的安裝目錄中建立檔案dump.rdb,並把資料儲存在該檔案中。

查看redis的安裝目錄

127.0.0.1:6379> config get dir1) "dir"2) "/root/\xe6\xa1\x8c\xe9\x9d\xa2"

資料恢複

只需將備份檔案dump.rdb拷貝到redis的安裝目錄即可。

5.  資料庫操作

Redis中,一共有16個資料庫,分別是0~15,一般情況下,進入資料庫預設編號是0,如果我們要進入指定資料庫,可以用select語句

切換到編號為5的資料庫

127.0.0.1:6379> select 5OK127.0.0.1:6379[5]> 

查看資料庫中所有的索引值

127.0.0.1:6379[5]> set key1 oneOK127.0.0.1:6379[5]> set key6 sixOK127.0.0.1:6379[5]> keys *1) "key6"2) "key1"

返回當前資料庫中所有key的數目:  dbsize 

刪除當前資料庫中的所有key:   flushdb    

清空所有資料庫中的所有key:   flushall

把當前資料庫中的key轉移到指定資料庫:move a aim_db

127.0.0.1:6379> select 2OK127.0.0.1:6379[2]> set name DavidOK127.0.0.1:6379[2]> move name 5(integer) 1127.0.0.1:6379[2]> select 5OK127.0.0.1:6379[5]> keys *1) "name"127.0.0.1:6379[5]> get name"David"127.0.0.1:6379[5]> dbsize(integer) 1127.0.0.1:6379[5]> flushdbOK127.0.0.1:6379[5]> keys *(empty list or set)127.0.0.1:6379[5]> flushallOK

 flushall會清空所有資料庫的資料,在工作中要慎用

127.0.0.1:6379[5]> select 2OK127.0.0.1:6379[2]> keys *(empty list or set)

 

(二)Redis 筆記——發布&訂閱、事務、資料庫操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.