21.9 redis介紹mysql
1. Redis和Memcached相似,也屬於k-v數據存儲redis
2. Redis官網redis.io, 當前最新穩定版4.0.1sql
3. 支持更多value類型,除了和string外,還支持hash、lists(鏈表)、sets(集合)和sorted sets(有序集合)數據庫
4. redis使用了兩種文件格式:全量數據(RDB)和增量請求(aof)。全量數據格式是把內存中的數據寫入磁盤,便於下次讀取文件進行加載。增量請求文件則是把內存中的數據序列化爲操做請求,用於讀取文件進行replay獲得數據,這種相似於mysql binlog。vim
5. redis的存儲分爲內存存儲、磁盤存儲和log文件三部分 app
21.10 redis安裝ide
1. 進入:spa
[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]# make install
[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操做將任務取出進行執行。
示例: