什麼是Redis
Redis是一個記憶體高速緩存資料庫,用C語言編寫,資料模型是Key-Value
支援豐富的資料結構類型,比如String,list,hash,set,sorted Set。可持久化,保證資料安全!
緩存分為 資料緩存和頁面緩存。
類似于新聞清單等的網站适合做頁面緩存,而商品展示頁面适合做資料緩存。Redis屬于資料緩存的範疇。
Redis和memcache比較
- Redis支援k/v資料類型,還提供list,set,zset,hash等資料結構的存儲。
- Redis支援master-slave(主-從)模式應用
- Redis支援資料的持久化,将記憶體中的資料保持在磁盤中,重新開機的時候再次加載進行使用。
- Redis單個value的最大限制是1GB,memcache隻能儲存1MB資料。
Linux下安裝Redis
- tar zxvf redis-2.6.14.tar.gz 解壓檔案
- make指令進行編譯
- 建立Redis目錄,并拷貝兩個檔案
mkdir /usr/local/redis cp redis-cli redis-server /usr/local/redis
- 将/home/lzl/rdtar/redis-2.6.14目錄下的redis-conf拷貝到/usr/local/redis中
cp redis.conf /usr/local/redis
- 在/usr/local/redis目錄下啟動Redis服務
./redis-server
- 設定Redis為背景啟動程式,在redis.conf檔案中進行設定。
daemonize no 改為 yes
- 在./redis-cli中存儲資料
Redis的Key-Value
Key的命名規則
除了空格、\n換行外其他的大部分字元都可以使用。
Key的常用操作
String類型操作
- String是redis最基本的類型
- 該類型可以包含任何資料,包括jpg圖檔或者序列化的對象
- 單個value最大上限是1G位元組
- 如果隻用string類型,redis是可以被看做加上持久性的memcache。
具體操作
mset key1 key2 … 設定多個key值
mget key1 key2 … 擷取多個key值
incr 類似于i++的操作,需要保證value值是整型。建立之後預設為1
decr 類似于i–。
append 追加字元串
substr 截取字元串
List類型的操作
Redis的List是一個雙向連結清單。通過push和pop操作添加和删除元素,既可以當做隊列也可以當做棧來使用。
應用場景:可以在Redis的List裡保留登入時間最近的10個資料,每次進來一個新登入者就删除一個資料,每次在連結清單中擷取對應的資訊,極大的減少資源的消耗。
具體操作
lpush 頂部添加元素 棧
lpop 删除頂部元素 棧
rpush 添加底部元素 隊列
rpop 删除底部元素 隊列
lrange key1 start end 檢視區間資料
llen 檢視List長度
ltrim key1 start end 截取指定區間的資料
Set類型的操作
redis的set是string類型的無序集合。
set元素最大可以包含(2的32次方-1)個元素
關于set集合除了基本的添加删除操作,其他有用的操作還包含集合的
取并集,交集,差集。通過這些操作可以很通容易的實作sns中的好友推薦功能。
具體操作
SortSet排序集合類型
和set集合一樣是string類型元素的集合,不同的是每個元素都會關聯一個權通過權值可以有序的擷取集合中的元素。
應用場景:熱門文章的查詢
sort set排序集合,都是有值和權來組成。通過權值的比較,來進行排序。
具體操作
Hash資料類型
持久化功能
snap shotting快照持久化
該持久化預設開啟,一次性把redis中全部的資料儲存一份存儲在硬碟中,如果資料非常多就不适合頻繁該持久化操作。
持久化設定在redis.conf檔案中,可以有以下的儲存設定
Redis的key機關之間内變化的越多,快照儲存的時間越快。
手動發起快照持久化
指令
./redis-cli bgsave
精細持久化(AOF持久化)
本質:把使用者執行的每個“寫”指令(添加、删除、修改)都備份到檔案中,還原資料的時候就是執行具體指令而已。
開啟AOF持久化。
将appendonly no改為appendonly yes
快照設定的三種模式,推薦使用第二種。
内容優化壓縮處理指令:
./redis-cli bgrewriteaof
配置Redis主從伺服器
可以把redis看做是一個處理速度很快的資料庫,一個工程項目中可以設定多個redis伺服器,來緩解多使用者的請求壓力。這裡可以設定主Redis伺服器進行增、删、改操作。可以配置多個Redis從伺服器來進行查詢操作。
主要設定還是在redis.conf檔案中進行配置。
從伺服器的配置如下:寫上主伺服器的ip以及端口号即可。