Redis的使用

Winter發表於2019-05-10

1.Redis的概念

  • Redis執行過程,也就是讀寫過程都是基於記憶體實現的key/value儲存,對比與memcached而言,會基於非同步方式(快照)同步到檔案系統,實現資料 的永續性儲存,單一程式響應使用者的所有的請求,具有主從架構 ;

  • Redis支援儲存的value型別有很多,包括string(字串)、list(連結串列)、set(集合)、zset(有序集合)和hash(雜湊型別);

2.Windows系統下安裝Redis

安裝地址 https://github.com/MicrosoftArchive/redis/releases

  • redis連線

r = redis.Redis(host='127.0.0.1', port=6379)host是redis主機,需要redis服務端和客戶端都啟動 redis預設埠是6379;

3.Linux系統下安裝Redis:


安裝命令列
yum install -y redis
啟動Redis
systemctl start redis.service
連線方式一
redis-cli -h 192.168.23.10 -p 6379
連線方式二
redis-cli -h 192.168.23.10 -p 6379 -a 123456
選擇資料庫:由於在配置檔案中預設定義使用16個database,因此每次登入Redis時,可以選擇使用哪個資料庫
select 0:表示使用0號資料庫
select 1:表示使用1號資料庫
清空資料庫
flushdb :清空當前資料庫
flushall :清空所有的庫

4.Redis中的命令和命令組

  • 命令組與命令的聯絡:一個命令組中包含多個命令,可以使用 help @命令組,檢視某個命令組中有多少命令,以及這些命令如何使用,如

help @string
help @server

  • 檢視特定命令的用法

help LLEN
help STRLEN;

5.Redis常用命令


set key value [EX seconds] [PX milliseconds] [NX|XX]

  • set robby ops :賦值; 、

  • get robby :取值;

  • EX :表示超時時長;

  • NX :如果一個鍵不存在則建立,存在不建立;

  • XX :如果一個鍵存在則建立,不存在不建立;

  • exists robby :判斷一個鍵值是否存在, 如果存在返回整數型別1 ,否則返回0;

  • append robby "值" :追加值;

  • 刪除鍵;


del key [key.....]
del robby

  • 設定一個整數值,讓數值增加

set number 1
incr number (加1)
decr number (減1)

6.Redis中的5種資料型別

  • 字串string :字串型別是Redis中最為基礎的資料儲存型別,是一個由位元組組成的序列,他在Redis中是二進位制安全的,這便意味著該型別可以接 受任何格式的資料,如JPEG影像資料貨Json物件描述資訊等,是標準的key-value,一般來存字串,整數和浮點數;

  • 列表list :Redis的列表允許使用者從序列的兩端推入或者彈出元素,列表由多個字串值組成的有序可重複的序列,是連結串列結構,所以向列表兩端新增 元素的時間複雜度為0(1),獲取越接近兩端的元素速度就越快;

  • 集合set :Redis的集合是無序不可重複的,和列表一樣,在執行插入和刪除和判斷是否存在某元素時,效率是很高的,集合最大的優勢在於可以進行 交集並集差集操作;

  • 有序集合sorted set :類似set,都是字串的集合,都不允許重複的成員出現在一個set中,他們之間差別在於有序集合中每一個元素都會有一個 score與之關聯,這個score可用於排序和排名;

  • 雜湊hash :Redis中的雜湊可以看成具有String key和String value的map容器,可以將多個key-value儲存到一個key中,每一個Hash可以儲存 4294967295個鍵值對;

7.Redis 事務

  • Redis 事務可以一次執行多個命令,多個操作要麼一次性執行完畢,要麼都不執行;

  • 一個事務從開始到執行會經歷三個階段:開始事務、命令入隊、執行事務;


# 使用multi開啟一個事務
multi (開啟一個事務日誌)
set name yhy
set age 25
set address changsha
exec (提交,執行)

8.什麼是Redis持久化

  • Redis支援RDB和AOF兩種持久化機制,持久化功能有效地避免因程式退出造成的資料丟失問題,下次重啟時利用之前持久化的檔案即可實現資料恢 復;

  • RDB持久化方式會在一個特定的間隔儲存那個時間點的一個資料快照;

  • AOF持久化方式則會記錄每一個伺服器收到的寫操作;

  • Redis的持久化是可以禁用的,就是說你可以讓資料的生命週期只存在於伺服器的執行時間裡;

  • 兩種方式的持久化是可以同時存在的,但是當Redis重啟時,AOF檔案會被優先用於重建資料;

9.Redis的sentinel機制


### 啟動systemctl
systemctl start redis-sentinel.service
###  登入Sentinel,檢視主從狀態
redis-cli  -p 26379
127.0.0.1:26379> info Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.23.10:6379,slaves=2,sentinels=1
### 停止Redis的master節點,登入sentinel檢視節點資訊
systemctl stop redis.service
[root@7 ~]   # redis-cli -p 26379          
127.0.0.1:26379> info sentinel 
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.23.12:6379,slaves=2,sentinels=1
127.0.0.1:26379> sentinel masters

  • 萬一主節點打擊,主從模型將會停止工作,為了解決這個問題,Redis提供了一個sentinel(哨兵),以此來實現主從切換的功能,一旦主節點當機了 ,sentinel將會在從節點中挑一個作為主節點, 與zookeeper類似;

  • Redis-Sentinel是Redis官方推薦的高可用性(HA)解決方案;

它的主要功能有以下幾點:

監控 :Sentinel不斷的檢查master和slave是否正常的執行;

通知 :如果發現某個redis節點執行出現問題,可以通過API通知系統管理員和其他的應用程式;

自動故障轉移 :能夠進行自動切換,當一個master節點不可用時,能夠選舉出master的多個slave中的一個來作為新的master,其它的slave節點會 將它所追隨的master的地址改為被提升為master的slave的新地址;

配置提供者 :哨兵作為Redis客戶端發現的權威來源:客戶端連線到哨兵請求當前可靠的master的地址,如果發生故障,哨兵將報告新地址;

參考: https://www.9xkd.com/user/plan-view.html?id=1487078743

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908432/viewspace-2643882/,如需轉載,請註明出處,否則將追究法律責任。

相關文章