Heim Datenbank MySQL-Tutorial linux centos5.8 安装redis

linux centos5.8 安装redis

Jun 07, 2016 pm 04:30 PM
linux redis 安装

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。 一.安装tcl 否则在redis make test时出报

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
一.安装tcl
否则在redis make test时出报错

You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1
Nach dem Login kopieren
wget http://downloads.sourceforge.net/tcl/tcl8.6.0-src.tar.gz
tar zxvf tcl8.6.0-src.tar.gz
cd tcl8.6.0-src
cd unix &&
./configure --prefix=/usr \
            --mandir=/usr/share/man \
            $([ $(uname -m) = x86_64 ] && echo --enable-64bit) 
make &&
sed -e "s@^\(TCL_SRC_DIR='\).*@\1/usr/include'@" \
    -e "/TCL_B/s@='\(-L\)\?.*unix@='\1/usr/lib@" \
    -i tclConfig.sh
make test
Nach dem Login kopieren
Tests ended at Tue Apr 16 12:02:27 CST 2013
all.tcl:        Total   116     Passed  116     Skipped 0       Failed  0
Nach dem Login kopieren
make install &&
make install-private-headers &&
ln -v -sf tclsh8.6 /usr/bin/tclsh &&
chmod -v 755 /usr/lib/libtcl8.6.so
Nach dem Login kopieren

二.redis
1.安装redis

wget http://redis.googlecode.com/files/redis-2.6.12.tar.gz
tar xzf redis-2.6.12.tar.gz
cd redis-2.6.12
make
make test
Nach dem Login kopieren

以下错误可以忽略

https://github.com/antirez/redis/issues/1034

[exception]: Executing test client: assertion:Server started even if RDB was unreadable!.
assertion:Server started even if RDB was unreadable!
    while executing
"error "assertion:$msg""
    (procedure "fail" line 2)
    invoked from within
"fail "Server started even if RDB was unreadable!""
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $elsescript"
    (procedure "wait_for_condition" line 7)
    invoked from within
"wait_for_condition 50 100 {
        [string match {*Fatal error loading*}  [exec tail -n1 
<p>make命令执行完成后,会在当前目录下生成4个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-stat,它们的作用如下:<br>
redis-server:Redis服务器的daemon启动程序<br>
redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作<br>
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能<br>
redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况</p>
<p>2.建立Redis目录</p>
<pre class="brush:php;toolbar:false">mkdir -p /opt/redis/bin
mkdir -p /opt/redis/etc
mkdir -p /opt/redis/var
cp redis.conf /opt/redis/etc/
cd src
cp redis-server redis-cli redis-benchmark redis-check-aof redis-check-dump /opt/redis/bin/
useradd redis
chown -R redis.redis /opt/redis
Nach dem Login kopieren

建立Redis目录,只是为了将Redis相关的资源更好的统一管理。你也可以使用
make install
安装在系统默认目录

3.复制启动文件

cp ../utils/redis_init_script /etc/init.d/redis
Nach dem Login kopieren

4.启动redis

cd /opt/redis/bin
./redis-server /opt/redis/etc/redis.conf
Nach dem Login kopieren
_._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 2.6.12 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 24454
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               
[24454] 12 Apr 10:34:19.519 # Server started, Redis version 2.6.12
[24454] 12 Apr 10:34:19.519 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[24454] 12 Apr 10:34:19.519 * The server is now ready to accept connections on port 6379
Nach dem Login kopieren

成功安装Redis后,直接执行redis-server即可运行Redis,此时它是按照默认配置来运行的(默认配置不是后台运行)。如果我们希望Redis按我们的要求运行,则需要修改配置文件,

5.设置itpables,充许192.168.0内网网段访问

iptables -A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 6379 -j ACCEPT
/etc/init.d/iptables save
Nach dem Login kopieren

6.配置redis
vi /opt/redis/etc/redis.conf

daemonize yes
#是否作为守护进程运行 默认0
pidfile /var/run/redis.pid
# 指定一个pid,默认为/var/run/redis.pid
port 6379
#Redis默认监听端口
bind 192.168.0.41
#绑定主机IP,默认值为127.0.0.1
timeout 300
#客户端闲置多少秒后,断开连接,默认为300(秒)
tcp-keepalive 0
# tcp保持连接
loglevel notice
#日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning
logfile /opt/redis/var/redis.log
#指定日志输出的文件名,默认值为stdout,也可设为/dev/null屏蔽日志
databases 16
#可用数据库数,默认值为16
save 900 1
#保存数据到disk的策略
#当有一条Keys数据被改变是,900秒刷新到disk一次
save 300 10
#当有10条Keys数据被改变时,300秒刷新到disk一次
save 60 10000
#当有1w条keys数据被改变时,60秒刷新到disk一次
#当dump .rdb数据库的时候是否压缩数据对象
rdbcompression yes
#本地数据库文件名,默认值为dump.rdb
dbfilename dump.rdb
#本地数据库存放路径,默认值为 ./
dir /opt/redis/var/
#内存限制
maxmemory 2G
#刷新策略
maxmemory-policy allkeys-lru
Nach dem Login kopieren

7. 调整系统内核参数
如果内存情况比较紧张的话,需要设定内核参数:

echo 1 > /proc/sys/vm/overcommit_memory
Nach dem Login kopieren

这里说一下这个配置的含义:/proc/sys/vm/overcommit_memory
该文件指定了内核针对内存分配的策略,其值可以是0、1、2。
0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2,表示内核允许分配超过所有物理内存和交换空间总和的内存
Redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child, 如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)

vi /etc/sysctl.conf

vm.overcommit_memory = 1
Nach dem Login kopieren

然后应用生效:

sysctl –p
Nach dem Login kopieren

8.修改redis服务脚本
vi /etc/init.d/redis

REDISPORT=6379
EXEC=/opt/redis/bin/redis-server
CLIEXEC=/opt/redis/bin/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/opt/redis/etc/redis.conf"
Nach dem Login kopieren

如果监听非本机IP地址时还需修改下脚本,不然关不掉

#增加监听地址变量
REDIHOST=192.168.0.41
#增加-h $REDIHOST
echo "Stopping ..."
                $CLIEXEC -h $REDIHOST -p $REDISPORT shutdown
Nach dem Login kopieren

9.测试

/etc/init.d/redis start
Nach dem Login kopieren
Nach dem Login kopieren

Starting Redis server…

/opt/redis/bin/redis-cli -h 192.168.0.41
Nach dem Login kopieren

redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> set mykey c1gstduio
OK
redis 127.0.0.1:6379> get mykey
“c1gstduio”
redis 127.0.0.1:6379> exit

benchmark
/opt/redis/bin/redis-benchmark -h 192.168.0.41

====== PING_INLINE ======
  10000 requests completed in 0.17 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1
99.51% 
<p>10. 关闭服务<br>
/opt/redis/bin/redis-cli shutdown<br>
如果端口变化可以指定端口:<br>
/opt/redis/bin/redis-cli -h 192.168.0.41 -p 6379 shutdown</p>
<p>11. 保存/备份<br>
数据备份可以通过定期备份该文件实现。<br>
因为redis是异步写入磁盘的,如果要让内存中的数据马上写入硬盘可以执行如下命令:<br>
redis-cli save 或者 redis-cli -p 6379 save(指定端口)<br>
注意,以上部署操作需要具备一定的权限,比如复制和设定内核参数等。<br>
执行redis-benchmark命令时也会将内存数据写入硬盘。</p>
<p>/opt/redis/bin/redis-cli save<br>
OK</p>
<p>查看结果<br>
ll  -h var/</p>
<pre class="brush:php;toolbar:false">total 48K
-rw-r--r-- 1 root root  40K Apr 12 11:49 dump.rdb
-rw-r--r-- 1 root root 5.3K Apr 12 11:49 redis.log
Nach dem Login kopieren

12.开机运行
vi /etc/rc.local

/etc/init.d/redis start
Nach dem Login kopieren
Nach dem Login kopieren

三.php扩展

redis扩展非常多,光php就有好几个,这里选用phpredis,Predis需要PHP >= 5.3
Predis ? ★ Repository JoL1hAHN Mature and supported
phpredis ? ★ Repository yowgi This is a client written in C as a PHP module.
Rediska ? Repository Homepage shumkov
RedisServer Repository OZ Standalone and full-featured class for Redis in PHP
Redisent ? Repository justinpoliey
Credis Repository colinmollenhour Lightweight, standalone, unit-tested fork of Redisent which wraps phpredis for best performance if available.

1.安装php扩展phpredis

wget https://nodeload.github.com/nicolasff/phpredis/zip/master --no-check-certificate
cd phpredis-master
unzip master
cd phpredis-master/
/opt/php/bin/phpize
./configure --with-php-config=/opt/php/bin/php-config
make
make install
Nach dem Login kopieren

接下来在php.ini中添加extension=redis.so
vi /opt/php/etc/php.ini

extension_dir = "/opt/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension=redis.so
Nach dem Login kopieren

vi test.php

phpinfo();
$redis = new Redis();
$redis->connect("127.0.0.1",6379);
$redis->set("test","Hello World");
echo $redis->get("test");
?>
Nach dem Login kopieren

redis
Redis Support enabled
Redis Version 2.2.2

四.基于php的web管理工具

phpRedisAdmin

https://github.com/ErikDubbelboer/phpRedisAdmin

演示:http://dubbelboer.com/phpRedisAdmin/?overview
这个用的人很多,但是我装完无法显示

readmin

http://readmin.org/

演示:http://demo.readmin.org/
需要装在根目录

phpredmin

https://github.com/sasanrose/phpredmin#readme

可以显示,有漂良的图表
使用伪rewrite,/index.php/welcome/stats

wget https://nodeload.github.com/sasanrose/phpredmin/zip/master
unzip phpredmin-master.zip

ln -s phpredmin/public predmin

编辑nginx,支持rewrite
nginx.conf

location ~* ^/predmin/index.php/
             {
		  rewrite ^/predmin/index.php/(.*) /predmin/index.php?$1 break;
		  fastcgi_pass  127.0.0.1:9000;
                  fastcgi_index index.php;
                  include fcgi.conf;
             }
Nach dem Login kopieren

crontab -e

* * * * * root cd /var/www/phpredmin/public && php index.php cron/index
Nach dem Login kopieren

配置redis
vi phpreadmin/config

'redis' => Array(
            'host'     => '192.168.0.30',
            'port'     => '6379',
            'password' => Null,
            'database' => 0
Nach dem Login kopieren

访问admin.xxx.com/predmin/就可以显示界面

五.实际使用感觉
redis装完后做discuzx2.5的cache
带宽消耗惊人,大概是memcached的十倍左右
内存占用也多了四分之一左右
discuz连接redis偶尔会超时和出错
最后还是切回了memcached

参考:

http://redis.io/topics/quickstart

http://hi.baidu.com/mucunzhishu/item/ead872ba3cec36db84dd798c

http://www.linuxfromscratch.org/blfs/view/svn/general/tcl.html

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So erstellen Sie den Redis -Clustermodus So erstellen Sie den Redis -Clustermodus Apr 10, 2025 pm 10:15 PM

Der Redis -Cluster -Modus bietet Redis -Instanzen durch Sharding, die Skalierbarkeit und Verfügbarkeit verbessert. Die Bauschritte sind wie folgt: Erstellen Sie ungerade Redis -Instanzen mit verschiedenen Ports; Erstellen Sie 3 Sentinel -Instanzen, Monitor -Redis -Instanzen und Failover; Konfigurieren von Sentinel -Konfigurationsdateien, Informationen zur Überwachung von Redis -Instanzinformationen und Failover -Einstellungen hinzufügen. Konfigurieren von Redis -Instanzkonfigurationsdateien, aktivieren Sie den Cluster -Modus und geben Sie den Cluster -Informationsdateipfad an. Erstellen Sie die Datei nodes.conf, die Informationen zu jeder Redis -Instanz enthält. Starten Sie den Cluster, führen Sie den Befehl erstellen aus, um einen Cluster zu erstellen und die Anzahl der Replikate anzugeben. Melden Sie sich im Cluster an, um den Befehl cluster info auszuführen, um den Clusterstatus zu überprüfen. machen

So lesen Sie den Quellcode von Redis So lesen Sie den Quellcode von Redis Apr 10, 2025 pm 08:27 PM

Der beste Weg, um Redis -Quellcode zu verstehen, besteht darin, Schritt für Schritt zu gehen: Machen Sie sich mit den Grundlagen von Redis vertraut. Wählen Sie ein bestimmtes Modul oder eine bestimmte Funktion als Ausgangspunkt. Beginnen Sie mit dem Einstiegspunkt des Moduls oder der Funktion und sehen Sie sich die Codezeile nach Zeile an. Zeigen Sie den Code über die Funktionsaufrufkette an. Kennen Sie die von Redis verwendeten Datenstrukturen. Identifizieren Sie den von Redis verwendeten Algorithmus.

So lesen Sie Redis -Warteschlange So lesen Sie Redis -Warteschlange Apr 10, 2025 pm 10:12 PM

Um eine Warteschlange aus Redis zu lesen, müssen Sie den Warteschlangenname erhalten, die Elemente mit dem Befehl LPOP lesen und die leere Warteschlange verarbeiten. Die spezifischen Schritte sind wie folgt: Holen Sie sich den Warteschlangenname: Nennen Sie ihn mit dem Präfix von "Warteschlange:" wie "Warteschlangen: My-Queue". Verwenden Sie den Befehl LPOP: Wischen Sie das Element aus dem Kopf der Warteschlange aus und geben Sie seinen Wert zurück, z. B. die LPOP-Warteschlange: my-queue. Verarbeitung leerer Warteschlangen: Wenn die Warteschlange leer ist, gibt LPOP NIL zurück, und Sie können überprüfen, ob die Warteschlange existiert, bevor Sie das Element lesen.

So verwenden Sie den Befehl Redis So verwenden Sie den Befehl Redis Apr 10, 2025 pm 08:45 PM

Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err).

So implementieren Sie Redis -Zähler So implementieren Sie Redis -Zähler Apr 10, 2025 pm 10:21 PM

Der Redis-Zähler ist ein Mechanismus, der die Speicherung von Redis-Schlüsselwertpaaren verwendet, um Zählvorgänge zu implementieren, einschließlich der folgenden Schritte: Erstellen von Zählerschlüssel, Erhöhung der Zählungen, Verringerung der Anzahl, Zurücksetzen der Zählungen und Erhalt von Zählungen. Die Vorteile von Redis -Zählern umfassen schnelle Geschwindigkeit, hohe Parallelität, Haltbarkeit und Einfachheit und Benutzerfreundlichkeit. Es kann in Szenarien wie Benutzerzugriffszählungen, Echtzeit-Metrikverfolgung, Spielergebnissen und Ranglisten sowie Auftragsverarbeitungszählung verwendet werden.

So verwenden Sie Redis Lock So verwenden Sie Redis Lock Apr 10, 2025 pm 08:39 PM

Um die Operationen zu sperren, muss die Sperre durch den Befehl setNX erfasst werden und dann den Befehl Ablauf verwenden, um die Ablaufzeit festzulegen. Die spezifischen Schritte sind: (1) Verwenden Sie den Befehl setNX, um zu versuchen, ein Schlüsselwertpaar festzulegen; (2) Verwenden Sie den Befehl Ablauf, um die Ablaufzeit für die Sperre festzulegen. (3) Verwenden Sie den Befehl Del, um die Sperre zu löschen, wenn die Sperre nicht mehr benötigt wird.

So verwenden Sie die Befehlszeile der Redis So verwenden Sie die Befehlszeile der Redis Apr 10, 2025 pm 10:18 PM

Verwenden Sie das Redis-Befehlszeilen-Tool (REDIS-CLI), um Redis in folgenden Schritten zu verwalten und zu betreiben: Stellen Sie die Adresse und den Port an, um die Adresse und den Port zu stellen. Senden Sie Befehle mit dem Befehlsnamen und den Parametern an den Server. Verwenden Sie den Befehl Hilfe, um Hilfeinformationen für einen bestimmten Befehl anzuzeigen. Verwenden Sie den Befehl zum Beenden, um das Befehlszeilenwerkzeug zu beenden.

So löschen Sie Redis -Daten So löschen Sie Redis -Daten Apr 10, 2025 pm 10:06 PM

So löschen Sie Redis -Daten: Verwenden Sie den Befehl Flushall, um alle Schlüsselwerte zu löschen. Verwenden Sie den Befehl flushdb, um den Schlüsselwert der aktuell ausgewählten Datenbank zu löschen. Verwenden Sie SELECT, um Datenbanken zu wechseln, und löschen Sie dann FlushDB, um mehrere Datenbanken zu löschen. Verwenden Sie den Befehl del, um einen bestimmten Schlüssel zu löschen. Verwenden Sie das Redis-Cli-Tool, um die Daten zu löschen.

See all articles