21.9 redis介紹;21.10 redis安裝;21.11 redis持久化;21.12
1. Redis和Memcached類似,也屬於k-v數據存儲
2. Redis官網redis.io, 當前最新穩定版4.0.1
3. 支持更多value類型,除了和string外,還支持hash、lists(鏈表)、sets(集合)和sorted sets(有序集合)
4. redis使用了兩種文件格式:全量數據(RDB)和增量請求(aof)。全量數據格式是把內存中的數據寫入磁盤,便於下次讀取文件進行加載。增量請求文件則是把內存中的數據序列化為操作請求,用於讀取文件進行replay得到數據,這種類似於mysql binlog。
5. redis的存儲分為內存存儲、磁盤存儲和log文件三部分
21.10 redis安裝
1. 進入:
[root@hao-01 ~]# cd /usr/local/src/
2. 下載:
[root@hao-01 src]# wget http://download.redis.io/releases/redis-4.0.1.tar.gz
3. 解壓:
[root@hao-01 src]# tar zxvf redis-4.0.1.tar.gz
4. 進入:
[root@hao-01 src]# cd /usr/local/src/redis-4.0.1
5. 編譯:
[root@hao-01 redis-4.0.1]# make
[root@hao-01 redis-4.0.1]# echo $?
6. 安裝:
[root@hao-01 redis-4.0.1]#
[root@hao-01 redis-4.0.1]# echo $?
7. 查找redis-cli安裝的絕對路徑:
[root@hao-01 redis-4.0.1]# which redis-cli
8. 拷貝redis.conf到/etc/下:
[root@hao-01 redis-4.0.1]# cp redis.conf /etc/
9. 編輯/etc/redis.conf :
[root@hao-01 redis-4.0.1]# vim /etc/redis.conf
更改1:daemonize yes
更改2:logfile "/var/log/redis.log"
更改3:dir /data/redis
更改4:appendonly yes
9. 創建:
[root@hao-01 redis-4.0.1]# mkdir /data/redis
10. 執行內核參數:
[root@hao-01 redis-4.0.1]# sysctl vm.overcommit_memory=1
[root@hao-01 redis-4.0.1]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
11. 編輯/etc/rc.local,把內核參數加入,使其開機啟動就生效:
[root@hao-01 redis-4.0.1]# vim /etc/rc.local
添加內容:
sysctl vm.overcommit_memory=1
echo never > /sys/kernel/mm/transparent_hugepage/enabled
12. 啟動:
[root@hao-01 redis-4.0.1]# redis-server /etc/redis.conf
13. 搜索是否啟動?
[root@hao-01 redis-4.0.1]# ps aux |grep redis
21.11 redis持久化
1. Redis提供了兩種持久化的方式,分別是RDB(Redis DataBase)和AOF(Append Only File)
2. RDB,簡而言之,就是在不同的時間點,將redis存儲的數據生成快照並存儲到磁盤等介質上。
3. AOF,則是換了一個角度來實現持久化,那就是將redis執行過的所有寫指令記錄下來,在下次redis重新啟動時,只要把這些寫指令從前到後再重復執行一遍,就可以實現數據恢復了。
4. 其實RDB和AOF兩種方式也可以同時使用,在這種情況下,如果redis重啟的話,則會優先采用AOF方式來進行數據恢復,這是因為AOF方式的數據恢復完整度更高。
5. 如果你沒有數據持久化的需求,也完全可以關閉RDB和AOF方式,這樣的話,redis將變成一個純內存數據庫,就像memcache一樣。
21.12 redis數據類型
Redis數據類型-string
string為最簡單的類型,與Memcached一樣的類型,一個key對應一個value,其支持的操作與Memcached的操作類似,它的功能更豐富。設置可以存二進制的對象。
示例:
1. 連接進入redis命令行,設定mykey值:
[root@hao-02 ~]# redis-cli
127.0.0.1:6379> set mykey "123"
2. 獲取mykey值:
127.0.0.1:6379> get mykey
3. 同時設定多個k值:
127.0.0.1:6379> mset k1 "1" k2 "2" k3 "c"
4. 同時獲取多個k值:
127.0.0.1:6379> mget k1 k2 k3 mykey
Redis數據類型-list
list是一個鏈表結構,主要功能是push、pop、獲取一個範圍的所有值等等。操作中key理解為鏈表的名字。
使用 list 結構,我們可以輕松地實現最新消息排行等功能(比如新浪微博的 TimeLine )。list 的另一個應用就是消息隊列,可以利用 list 的 push操作,將任務存在 list 中,然後工作線程再用pop操作將任務取出進行執行。
示例:
21.9 redis介紹;21.10 redis安裝;21.11 redis持久化;21.12