Redis 是一個Key-Value存儲的系統;它支持存儲的value類型有string(字符串),list(列表),set(集合),zset(有序集合);爲了保證效率;數據都緩存在內存中;它也週期性將內存數據寫入磁盤或者把讀寫操做寫入記錄文件。Redis使用單線程模型;還有其餘特性:例如健過時,發佈/訂閱,事務功能等等。
相比其餘個Key-Value存儲的系統;有這些優點:redis
Redis下載地址sql
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
習慣了使用非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 ###複製參數(從庫)### ###集羣參數###
相關配置參數:安全
配置用戶環境變量架構
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"
redis-server /data/redis/conf/redis-6379.conf # 或者 rds_start
redis-cli shutdown
# 或者
rds_stop
固然還有一種更直接,更粗暴的方式 kill進程 。不建議這樣操做;由於這樣不會作持久化操做;app
pkill redis-server
redis-cli
# 或者
rsql
redis-benchmark:redis性能測試工具 redis-check-aof:檢查aof日誌的工具 redis-check-dump:檢查rdb日誌的工具 redis-cli:鏈接用的客戶端 redis-server: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