Redis介紹和安裝
一. Redis的介紹
Redis 是一個Key-Value儲存的系統;它支援儲存的value型別有string(字串),list(列表),set(集合),zset(有序集合);為了保證效率;資料都快取在記憶體中;它也週期性將記憶體資料寫入磁碟或者把讀寫操作寫入記錄檔案。Redis使用單執行緒模型;還有其他特性:例如健過期,釋出/訂閱,事務功能等等。
相比其他個Key-Value儲存的系統;有這些優勢:
- 資料的永續性;Redis會週期性將記憶體資料寫入磁碟和將讀寫操作寫入記錄檔案。保證資料庫在重啟之後資料不丟失
- 支援master-slave模式;主從複製
- 支援儲存value型別多樣性;有list(列表),set(集合),zset(有序集合),bitmap等等。
- 在3.0版本正式提供了高可用分散式架構Redis Cluster叢集;提供了高可用性,讀寫和容量的擴充套件。
二. Redis的安裝與部署
2.1 下載地址
ofollow,noindex">Redis下載地址
2.2 安裝
tar -zxvf redis-5.0.0.tar.gz cd redis-5.0.0 make cd src make install PREFIX=/usr/local/redis mkdir -p /usr/local/redis/etc mv ../redis.conf /usr/local/redis/etc
2.3 建立redis使用者
習慣了使用非root使用者來管理資料庫;前提我們需要建立redis使用者和相關目錄
useradd redis mkdir -p /data/redis/{logs,conf,pid,data} chown -R redis:redis /data/redis
配置redis;在/data/redis/conf目錄下建立redis-6379.conf檔案;內容如下
###基本引數### daemonize yes pidfile /data/redis/pid/redis-6379.pid port 6379 tcp-backlog 65535 bind 0.0.0.0 timeout 0 tcp-keepalive 0 loglevel notice logfile /data/redis/logs/redis-6379.log databases 16 lua-time-limit 5000 maxclients 10000 protected-mode yes dir /data/redis/data/ ###慢日誌引數### slowlog-log-slower-than 10000 slowlog-max-len 128 ###記憶體引數### #maxmemory 1G #maxmemory-policy volatile-lru ###RDB持久化引數### save 3600 1 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename "dump-6379.rdb" ###AOF持久化引數### no-appendfsync-on-rewrite yes appendonly yes appendfilename "appendonly-6379.aof" appendfsync no auto-aof-rewrite-min-size 512mb auto-aof-rewrite-percentage 100 aof-load-truncated yes aof-rewrite-incremental-fsync yes ###客戶端Buffer引數### client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 ###其他引數### hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes latency-monitor-threshold 0 hz 10 ###安全引數### requirepass li0924 # masterauth 123456789 rename-command KEYS REDIS_KEYS rename-command FLUSHDB REDIS_FLUSHDB rename-command FLUSHALL REDIS_FLUSHALL ###複製引數(從庫)### ###叢集引數###
相關配置引數:
- daemonize:如需要在後臺執行,把該項的值改為yes
- pdifile:把pid檔案放在/var/run/redis.pid,可以配置到其他地址
- bind:指定redis只接收來自該IP的請求,如果不設定,那麼將處理所有請求,在生產環節中最好設定該項
- port:監聽埠,預設為6379
- timeout:設定客戶端連線時的超時時間,單位為秒
- loglevel:等級分為4級,debug,revbose,notice和warning。生產環境下一般開啟notice
- logfile:配置log檔案地址,預設使用標準輸出,即列印在命令列終端的埠上
- database:設定資料庫的個數,預設使用的資料庫是0
- save:設定redis進行資料庫映象的頻率
- rdbcompression:在進行映象備份時,是否進行壓縮
- dbfilename:映象備份檔案的檔名
- dir:資料庫映象備份的檔案放置的路徑
- slaveof:設定該資料庫為其他資料庫的從資料庫
- masterauth:當主資料庫連線需要密碼驗證時,在這裡設定
- requirepass:設定客戶端連線後進行任何其他指定前需要使用的密碼
- maxclients:限制同時連線的客戶端數量
- maxmemory:設定redis能夠使用的最大記憶體
- appendonly:開啟appendonly模式後,redis會把每一次所接收到的寫操作都追加到appendonly.aof檔案中,當redis重新啟動時,會從該檔案恢復出之前的狀態
- appendfsync:設定appendonly.aof檔案進行同步的頻率
- vm_enabled:是否開啟虛擬記憶體支援
- vm_swap_file:設定虛擬記憶體的交換檔案的路徑
- vm_max_momery:設定開啟虛擬記憶體後,redis將使用的最大實體記憶體的大小,預設為0
- vm_page_size:設定虛擬記憶體頁的大小
- vm_pages:設定交換檔案的總的page數量
- vm_max_thrrads:設定vm IO同時使用的執行緒數量
- stop-writes-on-bgsave-error 強制關閉Redis快照導致不能持久化;預設為yes
配置使用者環境變數
export REDIS_HOME=/usr/local/redis export PATH=$PATH:$REDIS_HOME/bin alias rds_start="redis-server /data/redis/conf/redis-6379.conf" alias rds_stop="redis-cli -a li0924 shutdown &> /dev/null" alias rsql="redis-cli"
2.4 啟動redis
redis-server /data/redis/conf/redis-6379.conf # 或者 rds_start
2.5 關閉redis
redis-cli shutdown # 或者 rds_stop
當然還有一種更直接,更粗暴的方式 kill程序 。不建議這樣操作;因為這樣不會做持久化操作;
pkill redis-server
2.6 redis命令列
redis-cli # 或者 rsql
2.7 redis工具箱
redis-benchmark:redis效能測試工具 redis-check-aof:檢查aof日誌的工具 redis-check-dump:檢查rdb日誌的工具 redis-cli:連線用的客戶端 redis-server:redis服務程序
現在可以愉快玩耍redis
# 1. 啟動redis資料庫 [redis@Postgres ~]$ rds_start # 2. 連線redis資料庫 [redis@Postgres ~]$ rsql # 3. 密碼安全認證 127.0.0.1:6379> AUTH li0924 OK # 4. 檢視所有健;原命令是KEYS *; 127.0.0.1:6379> redis_keys * 1) "name" # 5. 設定K-V 127.0.0.1:6379> set hello world OK 127.0.0.1:6379> redis_keys * 1) "hello" 2) "name" # 6. 獲取健hello的值 127.0.0.1:6379> get hello "world" # 7. 退出redis客戶端 127.0.0.1:6379> exit # 8. 關閉redis資料庫 [redis@Postgres ~]$ rds_stop [redis@Postgres ~]$ rsql Could not connect to Redis at 127.0.0.1:6379: Connection refused