一、redis系列之基礎知識與centos下環境搭建
1. Redis 與其他 key - value 快取產品有以下三個特點:
- Redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用。
- Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
- Redis支援資料的備份,即master-slave模式的資料備份。
2. Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。
3.Redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)
4. CAP理論就是說在分散式儲存系統中,最多隻能實現上面的亮點,而由於當前的網路硬體肯定會出現延遲丟包等問題,所以分割槽容忍性是我們必須要實現的。
C:強一致性:在分散式系統中的所有資料備份,在同一時刻是否同樣的值。
A:高可用性:在叢集中一部分節點故障後,叢集整體是否還能響應客戶端的讀寫請求。
P:分散式容忍性:以實際效果而言,分割槽相當於對通訊的時限要求。系統如果不能在時限內達成資料一致性,就意味著發生了分割槽的情況,必須就當前操作在C和A之間做出選擇。
分散式架構的時候必須做出取捨,以上三者只能同時實現兩者。
CA:傳統Oracle資料庫
AP:大多數網站架構的選擇
CP:redis、Mongdb
5. BASE就是為了解決關係資料庫強一致性引起的問題而引起的可用性降低而提出的解決方案。
BASE其實就是下面三個術語的縮寫:
基本可用(Basically Available)
軟狀態(Soft stable)
最終一致(Eventually consistent)
BASE的思想是通過讓系統放鬆對某一時刻資料一致性的要求來換取系統整體伸縮性和效能上的改觀。為什麼這麼說呢,原因就在於大型系統往往由於地域分佈和極高效能的要求,不可能採用分散式事務來完成這些指標,要想獲得這些指標,我們必須用另外一種,這裡的BASE就是解決這個問題的辦法。
6. reids:RE moteDI ctionaryS erver(遠端字典伺服器)
7. centos下安裝reids:
- 下載:wget wget http://download.redis.io/releases/redis-5.0.0.tar.gz
- 解壓
- 然後複製到到/opt目錄下
- 進入/opt/redis-5.0.0
- 執行:make
若是出現以下錯誤,則則說明未安裝gcc,使用命令安裝gcc:yum install gcc
安裝好後繼續執行make,若出現如下提示,則將make改為make MALLOC=libc,推測是因為編譯庫的問題。
- 安裝編譯後的檔案:make install,redis可執行檔案將被複制到/usr/local/bin/,但沒有配置,手動複製配置:cp redis.conf /myredis 目錄中(需要先新建myredis目錄)
- 更改redis.conf檔案中daemonize為yes 後臺啟動
9.啟動redis:
redis-server /myredis/redis.conf
redis-cli -p -6379
10. 在centos中檢視redis有沒有在後臺執行:ps -ef|grep redis
11. 關閉redis服務:
SHUTDOWN
然後exit返回linux命令列
12. redis系統自帶16個數據庫,切換資料庫用角標:0-15
13. 切換資料庫:select + 角標
例:切換到7號資料庫:select 6
14. 檢視當前資料庫所有資料:keys *。相當於關係型資料庫的select * 。
15. 檢視當前資料庫資料量:DBSIZE
16. 清空當前資料庫:FLUSHDB
清空所有資料庫:FLUSHALL
17.redis的五大資料型別:
- String(字串)
- Hash(雜湊,類似於Java中的Map)
- List(列表)
- Set(集合)
- Zset(sorted set:有序集合)
18. string是最基本的型別,可以理解成與Memcached一模一樣的型別,一個key對應一個value。
string型別是一個二進位制安全型別,意思是redis的string可以包含任何資料,比如jpg圖片或者序列話的物件
string型別是redis最基本的資料型別,一個redis中字串value最多可以是512M。
19. redis中Hash(雜湊)是一個鍵值對集合。
redis中hash是string型別的field和value的對映表,hash特別適合與儲存物件。
20. list(列表):redis列表是簡單的字串列表,按照插入順序排序。可以新增一個元素在列表的頭部(左邊)或者尾部(右邊)。它的底層實際是一個連結串列。
21. set(集合):string型別的無序集合不允許元素重複,,通過hashTable實現的。
22. zset(有序集合):zset和set一樣也是string型別元素集合,都不允許元素重複,不懂的是zset每個元素都會關聯一個都變了型別的分數,扔地上真是通過分數來為集合中的每個成員進行從小到大的排序,zset成員中每一個元素都是唯一的,但是分數(score)是可重複的。