Redis介紹和安裝

一. Redis的介紹

  Redis 是一個Key-Value存儲的系統;它支持存儲的value類型有string(字符串),list(列表),set(集合),zset(有序集合);爲了保證效率;數據都緩存在內存中;它也週期性將內存數據寫入磁盤或者把讀寫操做寫入記錄文件。Redis使用單線程模型;還有其餘特性:例如健過時,發佈/訂閱,事務功能等等。
  相比其餘個Key-Value存儲的系統;有這些優點:redis

  1. 數據的持久性;Redis會週期性將內存數據寫入磁盤和將讀寫操做寫入記錄文件。保證數據庫在重啓以後數據不丟失
  2. 支持master-slave模式;主從複製
  3. 支持存儲value類型多樣性;有list(列表),set(集合),zset(有序集合),bitmap等等。
  4. 在3.0版本正式提供了高可用分佈式架構Redis Cluster集羣;提供了高可用性,讀寫和容量的擴展。

二. Redis的安裝與部署

2.1 下載地址

  Redis下載地址sql

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進程 。不建議這樣操做;由於這樣不會作持久化操做;app

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服務進程

2.8 消除Redis啓動提醒

  固然這也許須要根據日誌如何提醒;作對應的修改。tcp

# 在/etc/sysctl.conf文件添加
vm.overcommit_memory = 1
net.core.somaxconn = 65536
# 在/etc/rc.local文件添加
echo never > /sys/kernel/mm/transparent_hugepage/enabled

   如今能夠愉快玩耍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
相關文章
相關標籤/搜索