Redis는 ANSI C로 작성된 오픈 소스 다중 플랫폼 데이터 저장 소프트웨어입니다. Redis는 Lua, C, Java, Python, Perl, PHP 및 기타 여러 언어를 지원할 수 있습니다.
redis에는 현재 공식 RPM 설치 패키지가 없습니다. 소스 코드에서 컴파일해야 하며, 컴파일하려면 Make와 GCC를 설치해야 합니다.
GCC와 Make를 설치하지 않았다면 yum을 사용하여 설치하세요.
yum install gcc make
공식 웹사이트에서 tar 아카이브를 다운로드하세요.
curl http://download.redis.io/releases/redis-3.0.4.tar.gz -o redis-3.0.4.tar.gz
압축을 풀어보세요.
tar zxvf redis-3.0.4.tar.gz
압축을 푼 디렉터리를 입력하세요.
cd redis-3.0.4
Make를 사용하여 소스 파일을 컴파일하세요.
make
소스 파일이 있는 디렉터리를 입력하세요.
cd src
Redis 서버와 클라이언트를 /usr/local/bin에 복사하세요.
cp redis-server redis-cli /usr/local/bin
센티넬을 복사해서 벤치마킹하고 확인하는 것이 가장 좋습니다.
cp redis-sentinel redis-benchmark redis-check-aof redis-check-dump /usr/local/bin
redis 구성 폴더를 만듭니다.
mkdir /etc/redis
/var/lib/redis
mkdir -p /var/lib/redis/6379
redis가 제대로 작동하려면 일부 커널 매개변수를 구성해야 합니다.
vm.overcommit_memory를 1로 구성하면 데이터가 잘리는 것을 방지할 수 있습니다. 자세한 내용은 여기를 참조하세요.
sysctl -w vm.overcommit_memory=1
redis.conf의 tcp-backlog 값(기본값 511)을 초과하도록 최대 백로그 연결 수를 수정합니다. sysctl 기반 IP 네트워크 터널링에 대한 자세한 내용은 kernel.org에서 확인할 수 있습니다.
sysctl -w net.core.somaxconn=512
투명 대용량 페이지에 대한 지원을 취소하세요. 이렇게 하면 redis 사용 중에 지연 및 메모리 액세스 문제가 발생할 수 있습니다.
echo never > /sys/kernel/mm/transparent_hugepage/enabled
redis.conf는 redis의 구성 파일입니다. 하지만 이 파일의 이름은 6379.conf이고 이 숫자는 redis가 수신하는 네트워크 포트입니다. 여러 Redis 인스턴스를 실행하려면 다음과 같은 명명 체계를 사용하는 것이 좋습니다.
샘플 redis.conf를 /etc/redis/6379.conf에 복사하세요.
cp redis.conf /etc/redis/6379.conf
이제 이 파일을 편집하고 매개변수를 구성하세요.
vi /etc/redis/6379.conf
daemonize를 no로 설정하면 시스템이 포그라운드에서 실행되어야 합니다. 그렇지 않으면 redis가 갑자기 중단됩니다.
daemonize no
pidfile을 /var/run/redis_6379.pid로 설정하세요.
pidfile /var/run/redis_6379.pid
기본 포트를 사용하지 않으려면 수정할 수 있습니다.
port 6379
로그 수준을 설정하세요.
loglevel notice
로그 파일 경로를 수정하세요.
logfile /var/log/redis_6379.log
디렉토리를 /var/lib/redis/6379
dir /var/lib/redis/6379
로 설정하세요. 보안을 향상시킬 수 있는 몇 가지 작업이 있습니다.
클라이언트 프로그램과 서버 프로그램은 일반적으로 동일한 시스템에서 실행되므로 네트워크 소켓을 수신할 필요가 없습니다. 이것이 귀하의 사용 사례와 유사하다면 네트워크 소켓 대신 Unix 소켓을 사용할 수 있습니다. 이렇게 하려면 포트를 0으로 구성한 후 다음 옵션을 구성하여 Unix 소켓을 활성화해야 합니다.
유닉스 소켓의 소켓 파일을 설정합니다.
unixsocket /tmp/redis.sock
소켓 파일 권한을 제한하세요.
unixsocketperm 700
이제 redis-cli가 액세스하려면 -s 매개변수를 사용하여 소켓 파일을 가리켜야 합니다.
redis-cli -s /tmp/redis.sock
원격 액세스가 필요할 수 있습니다. 그렇다면 각 작업 전에 필요하도록 비밀번호를 설정해야 합니다.
requirepass "bTFBx1NYYWRMTUEyNHhsCg"
다음 명령의 출력을 상상해 보세요. 예, 그러면 서버 구성이 출력되므로 가능하면 이 액세스를 거부해야 합니다.
CONFIG GET *
"rename-command" 명령을 사용하여 이 명령이나 다른 명령의 사용을 제한하거나 금지할 수 있습니다. 명령 이름과 대체 이름을 제공해야 합니다. 명령을 보다 안전하게 금지하려면 누구도 명령 이름을 추측할 수 없도록 대체 이름을 빈 문자열로 설정해야 합니다.
rename-command FLUSHDB "FLUSHDB_MY_SALT_G0ES_HERE09u09u"rename-command FLUSHALL ""rename-command CONFIG "CONFIG_MY_S4LT_GO3S_HERE09u09u"
유닉스 소켓을 통해 접속하려면 비밀번호를 사용하고,
명령을 수정하세요. 기본적으로 redis는 설정된 디렉터리의 dump.rdb 파일에 데이터 세트를 주기적으로 덤프합니다. save 명령을 사용하여 덤프 빈도를 구성할 수 있습니다. 첫 번째 매개변수는 시간 프레임(초)이고 두 번째 매개변수는 데이터 파일에 적용되는 수정 횟수입니다.
15분마다 키가 한 번 이상 수정되었습니다.
save 900 1
5분마다 키가 10번 이상 수정되었습니다.
save 300 10
1분마다 키가 최소 10,000번 수정되었습니다.
save 60 10000
/var/lib/redis/6379/dump.rdb 파일에는 마지막 저장 이후의 메모리 내 데이터 세트 덤프가 포함되어 있습니다. 먼저 임시 파일을 생성한 후 이전 덤프 파일을 교체하기 때문에 데이터 손상 문제는 없으며 파일을 복사하기만 하면 됩니다.
systemd를 사용하여 시스템 시작 목록에 redis를 추가할 수 있습니다.
예제 init_script 파일을 /etc/init.d에 복사하고, 스크립트 이름이 나타내는 포트 번호에 주의하세요.
cp utils/redis_init_script /etc/init.d/redis_6379
이제 systemd를 사용하고 싶으므로 /etc/systems/system 아래에 redis_6379.service라는 유닛 파일을 만듭니다.
vi /etc/systemd/system/redis_6379.service
아래 내용을 입력하세요. 자세한 내용은 systemd.service를 참조하세요.
[Unit]Description=Redis on port 6379[Service]Type=forkingExecStart=/etc/init.d/redis_6379 startExecStop=/etc/init.d/redis_6379 stop[Install]WantedBy=multi-user.target
现在添加我之前在 /etc/sysctl.conf 里面修改过的内存过量使用和 backlog 最大值的选项。
vm.overcommit_memory = 1net.core.somaxconn=512
对于透明巨页内存支持,并没有直接 sysctl 命令可以控制,所以需要将下面的命令放到 /etc/rc.local 的结尾。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
这样就可以启动了,通过设置这些选项你就可以部署 redis 服务到很多简单的场景,然而在 redis.conf 还有很多为复杂环境准备的 redis 选项。在一些情况下,你可以使用 replication 和 Sentinel 来提高可用性,或者将数据分散在多个服务器上,创建服务器集群。
Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。
위 내용은 CentOS 7에 Redis 서버를 설치하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!