日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Centos7 下Redis3安装

發布時間:2025/4/16 数据库 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Centos7 下Redis3安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis官網 ?http://redis.io

中文手冊 http://www.cnblogs.com/stephen-liu74/archive/2012/02/27/2370212.html

一、 下載redis最新版

下載?http://redis.io/download

目前最新版 redis3.2.11

cd /usr/local/src

wget?http://download.redis.io/releases/redis-3.2.11.tar.gz


二、 編譯安裝redis ? ?(詳情可見源碼根目錄的 README)

tar -zxvf redis-3.2.11.tar.gz?

cd redis-3.2.11

make


make命令執行完成后,會在src目錄下生成6個可執行文件,分別是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump、redis-sentinel,它們的作用如下:

redis-server:Redis服務器的daemon啟動程序

redis-cli:Redis命令行操作工具。當然,你也可以用telnet根據其純文本協議來操作

redis-benchmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能

redis-check-aof:更新日志檢查

redis-check-dump:用于本地數據庫檢查

redis-sentinel:集群管理工具

安裝:

make PREFIX=/usr/local/redis install

測試

make test

依賴 tcl,若沒有安裝請先安裝

yum -y install tcl?tcl-devel


三、 配置 Redis

mkdir -p /usr/local/redis/etc /usr/local/redis/log /usr/local/redis/data? ? ? ? ? #創建配置文件、日志文件、數據庫保存目錄

cp /usr/local/src/redis-3.2.11/redis.conf /usr/local/redis/etc/

touch?/usr/local/redis/log/redis.log


1. redis.conf 配置參數:

#是否作為守護進程運行

daemonize yes

#如以后臺進程運行,則需指定一個pid,默認為/var/run/redis.pid

pidfile /var/run/redis.pid

#綁定主機IP,默認值為127.0.0.1

bind 0.0.0.0

#Redis默認監聽端口

port 6379

#客戶端閑置多少秒后,斷開連接,默認為300(秒)

timeout 300

#日志記錄等級,有4個可選值,debug,verbose,notice(默認值),warning

loglevel notice

#指定日志輸出的文件名,默認值為stdout,也可設為/dev/null屏蔽日志

logfile "/usr/local/redis/log/redis.log"

#可用數據庫數,默認值為16,默認數據庫為0

databases 16

#保存數據到disk的策略

#當有一條Keys數據被改變是,900秒刷新到disk一次

save 900 1

#當有10條Keys數據被改變時,300秒刷新到disk一次

save 300 10

#當有1w條keys數據被改變時,60秒刷新到disk一次

save 60 10000

#當dump .rdb數據庫的時候是否壓縮數據對象

rdbcompression yes

#本地數據庫文件名,默認值為dump.rdb

dbfilename dump.rdb

#本地數據庫存放路徑,默認值為 ./

dir /usr/local/redis/data


# 設置PID文件目錄

pidfile /usr/local/redis/redis.pid


########### Replication #####################

#Redis的復制配置

# slaveof <masterip> <masterport> 當本機為從服務時,設置主服務的IP及端口

# masterauth <master-password> 當本機為從服務時,設置主服務的連接密碼

#連接密碼

requirepass foobared

#最大客戶端連接數

maxclients 30000

#最大內存使用設置,達到最大內存設置后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理后,任到達最大內存設置,將無法再進行寫入操作。

# maxmemory <bytes>

#是否在每次更新操作后進行日志記錄,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在于內存中。默認值為no

appendonly no

#更新日志文件名,默認值為appendonly.aof

#appendfilename

#更新日志條件,共有3個可選值。no表示等操作系統進行數據緩存同步到磁盤,always表示每次更新操作后手動調用fsync()將數據寫到磁盤,everysec表示每秒同步一次(默認值)。

# appendfsync always

appendfsync everysec

# appendfsync no


################ VIRTUAL MEMORY ###########

#是否開啟VM功能,默認值為no

vm-enabled no

# vm-enabled yes

#虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享

vm-swap-file /tmp/redis.swap

# 將所有大于vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的 (Redis的索引數據就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在于磁盤。默認值為0。

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4


############# ADVANCED CONFIG ###############

glueoutputbuf yes

hash-max-zipmap-entries 64

hash-max-zipmap-value 512

#是否重置Hash表

activerehashing yes

注意:Redis官方文檔對VM的使用提出了一些建議:

當你的key很小而value很大時,使用VM的效果會比較好.因為這樣節約的內存比較大.

當你的key不小時,可以考慮使用一些非常方法將很大的key變成很大的value,比如你可以考慮將key,value組合成一個新的value.

最好使用linux ext3 等對稀疏文件支持比較好的文件系統保存你的swap文件.

vm-max-threads這個參數,可以設置訪問swap文件的線程數,設置最好不要超過機器的核數.如果設置為0,那么所有對swap文件的操作都是串行的.可能會造成比較長時間的延遲,但是對數據完整性有很好的保證.

?

2. 調整系統內核參數

如果內存情況比較緊張的話,需要設定內核參數:

echo 1 > /proc/sys/vm/overcommit_memory

這里說一下這個配置的含義:/proc/sys/vm/overcommit_memory

該文件指定了內核針對內存分配的策略,其值可以是0、1、2。

0,表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,并把錯誤返回給應用進程。

1,表示內核允許分配所有的物理內存,而不管當前的內存狀態如何。

2,表示內核允許分配超過所有物理內存和交換空間總和的內存

Redis 在dump數據的時候,會fork出一個子進程,理論上child進程所占用的內存和parent是一樣的,比如parent占用的內存為 8G,這個時候也要同樣分配8G的內存給child, 如果內存無法負擔,往往會造成redis服務器的down機或者IO負載過高,效率下降。所以這里比較優化的內存分配策略應該設置為 1(表示內核允許分配所有的物理內存,而不管當前的內存狀態如何)


四. 運行 Redis

添加環境變量

echo "export PATH=$PATH:/usr/local/redis/bin" >> /etc/profile

.?/etc/profile

1. 運行服務

redis-server /etc/redis/redis.conf

即可在后臺啟動redis服務,確認運行了之后,可以用redis-benchmark命令測試看看,還可以通過redis-cli命令實際操作一下,比如:

redis-cli set foo bar

OK

redis-cli get foo

bar


2. 關閉服務

redis-cli shutdown

如果端口變化可以指定端口:

redis-cli -p 6380 shutdown


3. 保存/備份

數據備份可以通過定期備份該文件實現。

因為redis是異步寫入磁盤的,如果要讓內存中的數據馬上寫入硬盤可以執行如下命令:

redis-cli save 或者 redis-cli -p 6380 save(指定端口)

注意,以上部署操作需要具備一定的權限,比如復制和設定內核參數等。

執行redis-benchmark命令時也會將內存數據寫入硬盤。


4. 同步機制

redis實現的同步機制相對簡單,缺少同步機制常見的check point和校驗機制。

在 運行時,如果master -> slave同步請求轉發被丟棄, slave將無法恢復該請求的相關信息,直到slave重啟時從master全量加載數據時才能修復。因此,建議使用redis盡量利用其 key/value和value支持多種類型的特性,存儲一些相對不重要的數據。


?

五. 設置隨機啟動

vi /etc/init.d/redis ?#添加以下內容

#!/bin/bash
#
# redis - this script starts and stops the redis-server daemon
#
# chkconfig:?? - 80 12
# description:? Redis is a persistent key-value database
# processname: redis-server
# config:????? /etc/redis/redis.conf
# pidfile:???? /var/run/redis.pid

source /etc/init.d/functions

BIN="/usr/local/redis/bin"
CONFIG="/usr/local/redis/etc/redis.conf"
PIDFILE="/usr/local/redis/redis.pid"

### Read configuration
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
RETVAL=0
prog="redis-server"
desc="Redis Server"

start() {
??????? if [ -e $PIDFILE ];then
???????????? echo "$desc already running...."
???????????? exit 1
??????? fi
??????? echo -n $"Starting $desc: "
??????? daemon $BIN/$prog $CONFIG
??????? RETVAL=$?
??????? echo
??????? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
??????? return $RETVAL
}

stop() {
??????? echo -n $"Stop $desc: "
??????? killproc $prog
??????? RETVAL=$?
??????? echo
??????? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE
??????? return $RETVAL
}

restart() {
??? stop
??? start
}

case "$1" in
? start)
??????? start
??????? ;;
? stop)
??????? stop
??????? ;;
? restart)
??????? restart
??????? ;;
? condrestart)
??????? [ -e /var/lock/subsys/$prog ] && restart
??????? RETVAL=$?
??????? ;;
? status)
??????? status $prog
??????? RETVAL=$?
??????? ;;
?? *)
??????? echo $"Usage: $0 {start|stop|restart|condrestart|status}"
??????? RETVAL=1
esac
exit $RETVAL


用這個腳本管理之前,需要先配置下面的內核參數,否則Redis腳本在重啟或停止redis時,可能會報錯,并且不能自動在停止服務前同步數據到磁盤上:

vi /etc/sysctl.conf

vm.overcommit_memory = 1

然后應用生效:

sysctl -p

(調整內存(如果內存情況比較緊張的話,需要設定內核參數)
echo 1 > /proc/sys/vm/overcommit_memory
說明:
該文件指定了內核針對內存分配的策略,其值可以是0、1、2。
0 表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,并把錯誤返回給應用進程。
1 表示內核允許分配所有的物理內存,而不管當前的內存狀態如何。
2 表示內核允許分配超過所有物理內存和交換空間總和的內存
)

然后增加服務并開機自啟動:

chmod 755 /etc/init.d/redis

chkconfig redis on

chkconfig --list redis


centos 7 啟動腳本

/usr/lib/systemd/system/redis.service

#####################################

[Unit]

Description=Startup script for the Redis

Documentation=http://redis.io

After=network.target remote-fs.target nss-lookup.target


[Service]

Type=forking

PIDFile=/usr/local/redis/redis.pid

ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true


[Install]

WantedBy=multi-user.target


####



指定運行用戶

useradd -M -s /sbin/nologin redis

chown -R redis:redis?/usr/local/redis/log /usr/local/redis/data?pidfile所在目錄


cat /usr/lib/systemd/system/redis.service

###

[Unit]

Description=Startup script for the Redis

Documentation=http://redis.io

After=network.target remote-fs.target nss-lookup.target


[Service]

User=redis

Group=redis

Type=forking

ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true


[Install]

WantedBy=multi-user.target

###




systemctl enable?redis; systemctl start?redis

轉載于:https://blog.51cto.com/tianshili/1638506

總結

以上是生活随笔為你收集整理的Centos7 下Redis3安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。