Redis的使用

1.Redis的概念

  • Redis運行過程,也就是讀寫過程都是基於內存實現的key/value存儲,對比與memcached而言,會基於異步方式(快照)同步到文件系統,實現數據 的持久性存儲,單一進程響應用戶的全部的請求,具備主從架構 ;
  • Redis支持存儲的value類型有不少,包括string(字符串)、list(鏈表)、set(集合)、zset(有序集合)和hash(哈希類型);

2.Windows系統下安裝Redis

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

  • 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)解決方案;

它的主要功能有如下幾點:git

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

通知:若是發現某個redis節點運行出現問題,能夠經過API通知系統管理員和其餘的應用程序;redis

自動故障轉移:可以進行自動切換,當一個master節點不可用時,可以選舉出master的多個slave中的一個來做爲新的master,其它的slave節點會 將它所追隨的master的地址改成被提高爲master的slave的新地址;數據庫

配置提供者:哨兵做爲Redis客戶端發現的權威來源:客戶端鏈接到哨兵請求當前可靠的master的地址,若是發生故障,哨兵將報告新地址;安全

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

相關文章
相關標籤/搜索