日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis指南

發布時間:2023/12/9 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介

redis 和 memcached 都是高性能的鍵值緩存數據庫服務,其中 memcached 支持多線程,而 redis 支持豐富的數據結構且能內置持久化機制。

redis 數據都是以鍵值形式存儲的,鍵是字符串類型,值有 7 種類型(本質上是5種,其中 HyperLogLog 是 string,而 GEO 是 zset,可以通過 object encoding keyname 查看,但由于功能上的差異較大,這里分為7種):

1、string 字符串

2、list 列表

3、set 集合(所有命令均以 S 開頭)

4、hash 散列(所有命令均以 H 開頭)

5、zset 有序集合(所有命令均以 Z 開頭)

6、HyperLogLog

7、GEO (redis 3.2)

不同的值類型,甚至是同一種值類型,其底層實現也可能是不一樣的(主要是考慮到不同情況下的效率優化),具體可以看 redis 源碼。

?

二、常見命令

redis 的命令可以參考官網:https://redis.io/commands

對英文不熟練的也可以看國人翻譯的網站:http://redisdoc.com/

以下對常見的命令進行列舉

1、鍵操作命令

?

簡單示例:

127.0.0.1:6379> set age 18 OK 127.0.0.1:6379> dump age "\x00\xc0\x12\a\x00\xb2\xeb\xab\xbc\x1d\xeb\x911" 127.0.0.1:6379> restore age1 5000 "\x00\xc0\x12\a\x00\xb2\xeb\xab\xbc\x1d\xeb\x911" OK 127.0.0.1:6379> get age1 "18"

?

2、值操作命令:String

?

?

3、值操作命令(List)

?

?

4、值操作命令(Set)

?

?

?

5、值操作命令(Hash)

?

?

6、值操作命令(SortedSet)

?

7、值操作命令(HyperLogLog)

?

7、值操作命令(GEO)?

?

?

三、發布與訂閱

  redis 的發布與訂閱,是以頻道channel為中介,訂閱者訂閱相關channel,發布者向channel發送string類型消息,會通知到該channel相關的訂閱者。在實際開發中,會有一些問題,其中一個問題是,客戶端客觀上會存在斷線重連的情況,如果一個客戶端在訂閱了某個channel之后,斷線重連了(已經不是原來的訂閱者了),則需要重新訂閱相關channel,而且會丟失斷線期間的消息通知。另外,訂閱的客戶端會進行阻塞模式,一直監聽 redis 通知的消息。取消訂閱使用 unsubscribe ch1 [ch2] 命令,如果不帶任何頻道名,則表示退訂所有頻道,退訂操作在官方提供的 redis-cli 中是無法模擬的,因為一旦執行訂閱操作窗口就被阻塞了。
  

  基于 redis 發布與訂閱功能,在 redis2.8后實現了鍵空間通知(keyspace)和鍵事件通知(keyevent)的功能,前者用于當指定模式的鍵發生了變化時進行通知,后者用于當發生指定的操作命令時進行通知。該功能需要消耗一定的CPU資源,默認是關閉,可通過修改 redis.conf 文件或執行 config set notify-keyspace-events AKE 來開啟。命令中的 "AKE" 表示開啟所有類型的通知,更細化的設置請參考官方手冊,可以指定具體針對具體類型的鍵進行 keyspace 或 keyevent 通知。

  監視一個 keyspace/keyevent 的格式是?psubscribe __keyspace@<db>__:* 和 psubscribe __keyevent@<db>__:* ,如訂閱 Users: 開頭的鍵發生變化如下:

psubscribe __keyspace@0__:Users:*

  而訂閱刪除事件的操作如下:

psubscribe __keyevent@0__:del

  而如下的操作將會同時訂閱 keyspace 和 keyevent,在執行類似 add key value 操作時,會收到兩條通知消息:

psubscribe __key*@0__:*

?

?

?

四、事務

  redis 在一定程度上實現了事務邏輯(不支持回滾),通過 multi/exec 包含的命令集(順序的將其中的命令入隊,如果入隊成功會返回 queued,如果入隊失敗則會導致事務失敗,即使執行exec也會返回事務錯誤),將以原子操作執行(需要注意的是,如果事務隊列中的某些命令執行成功,而某些命令執行失敗是存在的,redis 并不會回滾。在事務命令入隊時,redis只會檢查嚴重的語法格式錯誤,邏輯錯誤是沒法檢測的,比如對一個string鍵執行 lpush 操作)。 multi 命令標記著事務的開始,exec 標記事務的結束并提交事務,discard 標記著事務的結束并放棄事務。與事務常常一起配合使用的有 watch 命令,該命令用于在事務開始前監視一個 key 的內容是否發生變化。 在執行 exec 命令提交事務時,redis會檢測當前的 watch 隊列中的數據是否發生變化,如果發生變化,則事務將不被執行(程序可以嘗試重試操作,使用樂觀鎖是從效率考慮)。無論提交還是放棄(exec/discard)一個事務,都會清空當前的 watch 隊列,如果需要在事務開始前取消一個之前watch的操作,可以使用 unwatch 命令。

  

  注意,如果 watch 的是一個帶生存時間的鍵,那么即使該鍵過期了,redis 仍然認為其是沒有變化的,事務仍可正常執行。

  redis 腳本是在 redis2.6 之后引入的另一種處理事務的方法,使用腳本要更簡單,并且速度更快。redis 官方表示,短時間內并不會移除原有的事務功能,但未來如果腳本被廣泛使用的話并不排除這種可能。

?

?

五、服務器管理

1、慢日志

  通過慢日志,可以記錄執行時間較長的命令,從而便于找出項目的效率問題。

  通過下面的命令可以設置當命令耗時超過多少微秒時將被記錄:

config set slowlog-log-slower-than 10000

  這些慢日志會記錄到一個隊列中,可以通過下面的命令設置隊列的長度:

CONFIG SET slowlog-max-len 1000

  查看慢日志可以用下面的命令,如果跟上數字,表示顯示指定數量的日志:

slowlog get [number]

?

  查看當前慢日志的數量:

slowlog len

  清空慢日志:

slowlog reset

?

?

?

?

?

六、集群

?

?

七、redis性能測試

http://www.cnblogs.com/silent2012/p/4514901.html

轉載于:https://www.cnblogs.com/tianyajuanke/p/6134323.html

總結

以上是生活随笔為你收集整理的Redis指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。