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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Redis数据存储解决方案

發(fā)布時(shí)間:2024/7/19 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis数据存储解决方案 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://www.tuicool.com/articles/77nUZn

1、背景

1.1 Redis簡(jiǎn)介

官方網(wǎng)站:?http://redis.io/?,Redis是REmote DIctionary Server的縮寫。

Redis是一個(gè)開(kāi)源的使用ANSI C語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。從2010年3月15日起,Redis的開(kāi)發(fā)工作由VMware主持。它跟 memcached 類似,不過(guò)數(shù)據(jù)可以持久化,而且支持的數(shù)據(jù)類型很豐富。它在保持鍵值數(shù)據(jù)庫(kù)簡(jiǎn)單快捷特點(diǎn)的同時(shí),又吸收了部分關(guān)系數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)。從而使它的位置處于關(guān)系數(shù)據(jù)庫(kù)和鍵值數(shù)據(jù)庫(kù)之間。Redis不僅能保存Strings類型的數(shù)據(jù),還能保存Lists類型(有序)和Sets類型(無(wú)序)的數(shù)據(jù),而且還能完成排序(SORT)等高級(jí)功能,在實(shí)現(xiàn)INCR,SETNX等功能的時(shí)候,保證了其操作的原子性,除此以外,還支持主從復(fù)制等功能。Redis可以被看成是一個(gè)數(shù)據(jù)結(jié)構(gòu)服務(wù)器。

Redis的所有數(shù)據(jù)都是保存在內(nèi)存中,然后不定期的通過(guò)異步方式保存到磁盤上(這稱為“半持久化模式”);也可以把每一次數(shù)據(jù)變化都寫入到一個(gè)append only file(aof)里面(這稱為“全持久化模式”)。

1.2 瓶頸

當(dāng)前卡布西游項(xiàng)目,數(shù)據(jù)存儲(chǔ)采用MySQL,主游戲庫(kù)共分為20個(gè)庫(kù),分布在5臺(tái)機(jī)器上,每個(gè)庫(kù)數(shù)據(jù)量約為10G,各機(jī)器均采用RAID5加速磁盤訪問(wèn);當(dāng)同時(shí)在線人數(shù)達(dá)到5W時(shí),DB磁盤IO壓力很大,導(dǎo)致游戲卡,在線人數(shù)再上不去了。而Redis數(shù)據(jù)讀寫都是直接操作內(nèi)存,可有效解決這一瓶頸。

1.3 解決方案概述

將部分?jǐn)?shù)據(jù)壓縮導(dǎo)入到redis后,總數(shù)據(jù)量約15G(轉(zhuǎn)換成redis數(shù)據(jù)類型數(shù)據(jù)量),一主一從模型,共兩組。一臺(tái)機(jī)器內(nèi)存32G,開(kāi)20個(gè)實(shí)例,共40個(gè)實(shí)例;預(yù)估每個(gè)實(shí)例最多存儲(chǔ)2G數(shù)據(jù)(現(xiàn)在沒(méi)這么多)。多實(shí)例方便做持久化。

主庫(kù)不做AOF,也不做快照,只在每晚12點(diǎn)計(jì)劃任務(wù)做一次快照并轉(zhuǎn)移到異地。從庫(kù)開(kāi)啟AOF并1秒落地。

主庫(kù)每5分鐘插入一個(gè)時(shí)間點(diǎn)(crontab實(shí)現(xiàn)),方便從庫(kù)AOF記錄時(shí)間點(diǎn),用于定點(diǎn)還原。

2、安裝配置

2.1 硬件配置

Dell R410? 32G內(nèi)存;兩個(gè)CPU,每個(gè)CPU 4個(gè)核心;300G硬盤

2.2 安裝

a)安裝TCMalloc庫(kù)

wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz ? tar zxf libunwind-0.99-alpha.tar.gz ? cd libunwind-0.99-alpha/ ? CFLAGS=-fPIC ./configure ? make CFLAGS=-fPIC ? make CFLAGS=-fPIC install

b)安裝google-perftools:

wget http://google-perftools.googlecode.com/files/google-perftools-1.8.2.tar.gztar zxf google-perftools-1.7.tar.gz ? cd google-perftools-1.7/ ? ./configure ? make ? make install ? echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf ? /sbin/ldconfig

?

c)安裝redis

wget http://redis.googlecode.com/files/redis-2.2.14.tar.gztar xzvf redis-2.2.14.tar.gz ? cd redis-2.2.14 ? make USE_TCMALLOC=yes

?

//make之后會(huì)在 src目錄下產(chǎn)生redis-server ?redis-cli ?redis-benchmark ?redis-check-dump

將其拷貝到/usr/local/redis/bin目錄下,將配置文件redis.conf拷貝到/usr/local/redis/etc目錄

//統(tǒng)一建立目錄,方便管理

mkdir -p /usr/local/redis/bin

mkdir -p /usr/local/redis/etc

mkdir -p /usr/local/redis/var

mkdir -p /data/redis-data

# mkdir -p /data/redis-data/redis60{01,02,03,04,05,06,07,08,09,10}

檢查tcmalloc是否生效

# lsof -n | grep tcmalloc

出現(xiàn)以下信息說(shuō)明生效

redis-ser 13768?? root? mem?????? REG??????? 8,5? 1616491???? 788696 /usr/local/lib/libtcmalloc.so.0.1.0

//裝完后,可能libtcmalloc沒(méi)有注冊(cè),沒(méi)有上面信息,在mysqld_safe文件里加一條:

export LD_PRELOAD=/usr/local/lib/libtcmalloc.so

//再重啟mysql(線上操作謹(jǐn)慎!!!)(使用tmalloc,內(nèi)存分配效率更高)

2.3 配置

//當(dāng)前規(guī)劃一共開(kāi)40個(gè)實(shí)例,每臺(tái)機(jī)器20個(gè)實(shí)例,下面以實(shí)例01為例:

//配置文件名: redis6001.conf ~ redis6040.conf

daemonize yespidfile /var/run/redis6001.pidport 6001 ? timeout 300 ? loglevel debug ? logfile /usr/local/redis/var/debug6001.log ? syslog-enabled yes ? databases 16 ? rdbcompression yes ? dbfilename redis6001.rdb ? dir /data/redis-data/redis6001 ? slave-serve-stale-data yes ? requirepass My#redis appendonly no ? no-appendfsync-on-rewrite no ? vm-enabled no ? hash-max-zipmap-entries 512 ? hash-max-zipmap-value 64 ? list-max-ziplist-entries 512 ? list-max-ziplist-value 64 ? set-max-intset-entries 512 ? activerehashing yes

?

3、主從同步備份及相關(guān)腳本

3.1 主從同步目的目標(biāo)

主從的主要目的:數(shù)據(jù)持久化,災(zāi)難恢復(fù),冗余。主庫(kù)不落地,減少消耗。

3.2 主從配置

從庫(kù)安裝配置同主庫(kù)一致,主庫(kù)無(wú)需任何改動(dòng)(允許從庫(kù)訪問(wèn)),從庫(kù)需增加兩個(gè)地方配置:slaveof + AOF

slaveof 192.168.3.180 6301

masterauth My#redis

appendonly yes

appendfilename appendonly01.aof

appendfsync everysec

?

//配置文件名: slave6001.conf ~ slave6040.conf

daemonize yespidfile /var/run/slave6001.pid ? port 6001 ? timeout 300 ? loglevel debug ? logfile /usr/local/redis/var/debug6001.log ? syslog-enabled yes ? databases 16 ? rdbcompression yes ? dbfilename slave6001.rdb ? dir /data/redis-data/slave6001 ? slaveof 192.168.0.139 6001 ? masterauth My#redis slave-serve-stale-data yes ? requirepass My#redis appendonly yes ? appendfilename slave6001.aof ? appendfsync everysec ? no-appendfsync-on-rewrite no ? vm-enabled no ? vm-swap-file /tmp/redis.swap ? vm-max-memory 0 ? vm-page-size 32 ? vm-pages 134217728 ? vm-max-threads 4 ? hash-max-zipmap-entries 512 ? hash-max-zipmap-value 64 ? list-max-ziplist-entries 512 ? list-max-ziplist-value 64 ? set-max-intset-entries 512 ? activerehashing yes

3.3 備份

備份策略:主庫(kù)每晚12點(diǎn)串行給每個(gè)實(shí)例做一次快照(bgsave);從庫(kù)每晚12點(diǎn)串行對(duì)AOF文件打包備份(tar),打包備份后做一次AOF文件壓縮(bgrewriteaof)。每天的數(shù)據(jù)起始點(diǎn)是前一天晚上rewriteaof后的數(shù)據(jù)。

主庫(kù)每晚12點(diǎn)串行給每個(gè)實(shí)例做一次快照(bgsave)。主庫(kù)備份腳本(redis_bgsave.sh)

#!/bin/bash

#date=`date +%y%m%d_%H%M%S`

REDISPASSWORD=My#redis

for PORT in `seq 6001 6020`

do

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p $PORT -a $REDISPASSWORD bgsave

sleep 10

done

date >> /usr/local/redis/var/bgsave.log

從庫(kù)每晚12點(diǎn)串行拷貝每個(gè)實(shí)例的AOF到其他目錄并對(duì)其打包,壓縮包要有異地備份,之后再壓縮AOF(bgrewriteaof)。

從庫(kù)備份AOF并bgrewriteaof腳本(redis_backup.sh :對(duì)單個(gè)實(shí)例)

#!/bin/sh

## FD:File Dir

## RD:Runing Dir

## 第一個(gè)參數(shù)為redis實(shí)例名

if [ $# -ne 1 ]; then

echo “Usage:$0? redis_name”

exit

fi

CURDATE=`date +%Y%m%d`

CURHOUR=`date +%Y%m%d_%H`

CURTIME=`date +%Y%m%d_%H%M%S`

REDISPASSWORD=My#redis

REDISNAME=$1

PORT=`echo $REDISNAME | cut -c6-9`

LOGFILE=/data/logs/redisbak/redis_allbak_${CURDATE}.log

if [ "${REDISNAME}" = "" ]; then

echo “redis name Error!”

exit 1

else

if [ ! -d "/data/redis-data/${REDISNAME}" ]; then

echo “redis name Error!”

exit 1

fi

fi

DDIR=/data/backup/redis/$CURHOUR

mkdir -p ${DDIR}

RDIR=/data/redis-data/$REDISNAME

cd ${RDIR}

tar -zcf $DDIR/${REDISNAME}_${CURTIME}.tar.gz $REDISNAME.aof

if [ $? != 0 ]; then

echo “tar error $REDISNAME.aof” >> $LOGFILE

#exit 1

fi

sleep 5

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p $PORT -a $REDISPASSWORD bgrewriteaof

sleep 5

###? delete old backup data dir? ###

#/bin/rm -rf `date -d -7day +”%Y%m%d”`

find /data/backup/redis/ -mtime +7 | xargs rm -rf

echo “Backup $REDISNAME ok at $CURTIME !” >> $LOGFILE

從庫(kù)對(duì)所有實(shí)例備份(/data/sh/redis_allbak.sh)

#!/bin/sh

CURDATE=`date +%Y%m%d`

LOGFILE=/data/logs/redisbak/redis_allbak_${CURDATE}.log

for PORT in `seq 6001 6020`

do

/data/sh/redis_backup.sh slave${PORT} && echo “slave${PORT} ok `date +%Y%m%d_%H%M%S`” >> $LOGFILE 2>&1 || echo “slave${PORT} backup error” >> $LOGFILE 2>&1

done

?

4、操作注意事項(xiàng)

1. 若主庫(kù)掛了,不能直接開(kāi)啟主庫(kù)程序。若直接開(kāi)啟主庫(kù)程序?qū)?huì)沖掉從庫(kù)的AOF文件,這樣將導(dǎo)致只能恢復(fù)到前一天晚上12的備份。

2. 程序在跑時(shí),不能重啟網(wǎng)絡(luò)(程序是通過(guò)網(wǎng)絡(luò)接口的端口進(jìn)行讀寫的)。網(wǎng)絡(luò)中斷將導(dǎo)致中斷期間數(shù)據(jù)丟失。

3. 確定配置文件全部正確才啟動(dòng)(尤其不能有數(shù)據(jù)文件名相同),否則會(huì)沖掉原來(lái)的文件,可能造成無(wú)法恢復(fù)的損失。

?

5、災(zāi)難恢復(fù)

5.1 主庫(kù)故障,快速恢復(fù)到最近狀態(tài)

描述:主庫(kù)掛了(redis程序掛了/機(jī)器宕機(jī)了),從庫(kù)正常,恢復(fù)到主庫(kù)掛掉的時(shí)間點(diǎn):去從庫(kù)手動(dòng)做一次快照,拷貝快照到主庫(kù)相應(yīng)目錄,啟動(dòng),OK。

在從庫(kù)做一次快照,轉(zhuǎn)移快照文件到其他目錄,將快照文件目錄拷貝到主庫(kù)相應(yīng)目錄,啟動(dòng)主庫(kù),OK!

( /data/sh/redis_bgsave_cp.sh )

#!/bin/bash

REDISPASSWORD=My#redis

for PORT in `seq 6001 6020`

do

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p $PORT -a $REDISPASSWORD bgsave

sleep 5

done

sleep 15

for PORT in `seq 6001 6020`

do

SDIR=/data/redis-data/slave${PORT}/

DDIR=/data/redis_recovery/redis-data/

mkdir -p $DDIR/redis${PORT}/

cd $SDIR

cp -rf slave${PORT}.rdb $DDIR/redis${PORT}/redis${PORT}.rdb

#sleep 1

done

在主庫(kù)將原來(lái)數(shù)據(jù)目錄重命名。

從從庫(kù)拷貝快照文件到主庫(kù)。

啟動(dòng)主庫(kù)。

5.2 恢復(fù)到當(dāng)天12點(diǎn)狀態(tài)

注意備份數(shù)據(jù)(當(dāng)前狀態(tài)AOF+正常退出快照)!

停止redis。

解壓AOF(/data/sh/redis_untar.sh)

#!/bin/bash

DAY=20111102

SDIR=/data/backup/redis/20111102_00/

cd $SDIR

for PORT in `seq 6001 6020`

do

tar -zxf slave${PORT}_$DAY_*.tar.gz

sleep 2

done

切割A(yù)OF(/data/sh/redis_sed.sh)

#!/bin/bash

DDIR=/data/redis_recovery/

TAG=”TAG111101_1200″

for PORT in `seq 6001 6020`

do

SDIR=/data/backup/redis/20111102_00/

SAOF=${SDIR}/slave${PORT}.aof

line=`sed -n “/$TAG/=” $SAOF`

num=$[$line + 3]

mkdir -p ${DDIR}/slave${PORT}/

sed “${num},\$d” $SAOF > ${DDIR}/slave${PORT}/slave${PORT}.aof

done

將原來(lái)數(shù)據(jù)目錄重命名。

將切割出來(lái)的AOF目錄重命名為配置文件的數(shù)據(jù)目錄。(注釋主從同步配置項(xiàng))。

啟動(dòng)從庫(kù)。

做快照,拷貝到主庫(kù),啟動(dòng)主庫(kù)(同5.1)。

5.3 恢復(fù)到兩天或幾天前12點(diǎn)狀態(tài)

從庫(kù)每晚備份要備份AOF未bgrewriteaof之前的數(shù)據(jù),可根據(jù)當(dāng)天晚上12點(diǎn)備份,沒(méi)有bfrewriteaof之前的AOF文件來(lái)進(jìn)行恢復(fù),方法同5.2。

?

6、監(jiān)控

6.1 Nagios監(jiān)控

# /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6301 -a My#redis info

used_memory_human:1.49G

master_link_status:down????????????????????????? up/down

db0:keys=2079581,expires=0

//監(jiān)控進(jìn)程數(shù)(每臺(tái)機(jī)器redis實(shí)例數(shù))

define service{

use???????????????????????? local-service

host_name?????????????????? 119.147.163.xxx

servicegroups???????????????? procs

service_description????????? ???redis_20

check_command?????????????????? check_nrpe!check_procs\!20:20\!20:25\!redis-server

}

//監(jiān)控主從同步狀態(tài)(獲取從庫(kù)master_link_status與keys的值)

//status=down直接嚴(yán)重警告,keys相差10警告,keys相差100嚴(yán)重警告

define service{

use??????????????????? ?? local-service

#??????? hostgroup_name??????? ?? kabuxiyou

host_name?????????????? 119.147.161.xxx

servicegroups????????????????????????????? redis

service_description???? ??????? redis_239

check_command????????? check_nrpe!check_redis_slave\!192.168.0.139\!6379\!127.0.0.1\!6380

}

//監(jiān)控實(shí)例內(nèi)存使用大小,1.8G警告,2G嚴(yán)重警告

define service{

use??????????? ???????????????????? local-service

#??????? hostgroup_name???????? kabuxiyou

host_name?????????????? 119.147.161.xxx

servicegroups????????????????????????????? redis

service_description?????????????????? redis_mem_22

check_command??????????????????????? check_nrpe!check_redis_mem\!127.0.0.1\!6381

}

?

7、資料

7.1 參考資料

Redis入門手冊(cè)(zh_v1.0).pdf

http://www.infoq.com/cn/articles/tq-why-choose-redis

//?為什么使用 Redis及其產(chǎn)品定位

http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage

//?Redis內(nèi)存使用優(yōu)化與存儲(chǔ)

http://www.infoq.com/cn/articles/tq-redis-copy-build-scalable-cluster

//?Redis復(fù)制與可擴(kuò)展集群搭建

http://blog.prosight.me/index.php/2011/08/802

//?Redis中7種集合類型應(yīng)用場(chǎng)景

7.2 版本

最新穩(wěn)定版:

wget http://redis.googlecode.com/files/redis-2.2.14.tar.gz ? ?// 2011.10.1

wget http://redis.googlecode.com/files/redis-2.4.2.tar.gz ? ?// 2011.11.15

wget http://redis.googlecode.com/files/redis-2.4.10.tar.gz ? ?// 2012.04.16

?

8、卡布西游Redis分布

8.1 服務(wù)器分布

服務(wù)器分布:??????????????????????????????????????????????????????? 實(shí)例名:???????????????????????????????????? 端口:

… … …

8.2 mysql轉(zhuǎn)redis規(guī)則

1.Key命名規(guī)則

Key采用字母+數(shù)字的形式 避免多個(gè)應(yīng)用使用同一個(gè)key的時(shí)候互相覆蓋,主項(xiàng)目中的key采用GJ#[UID] 例:GJ12345678

2.字段命名規(guī)則

主項(xiàng)目中的key內(nèi)包含多個(gè)字段 代表多個(gè)應(yīng)用 目前給每個(gè)應(yīng)用預(yù)留的字段取值范圍為100(實(shí)際使用中字段不應(yīng)該超過(guò)10個(gè)左右不然使用哈希的意義不大了)。

當(dāng)前的預(yù)留字段劃分:

100~199為成就相關(guān)(當(dāng)前使用150、151 對(duì)應(yīng)MySQL的achieve_user表的history與current字段)

200~299為妖怪相關(guān)(當(dāng)前使用200 對(duì)應(yīng)MySQL的spirit_store表 實(shí)際應(yīng)用時(shí)應(yīng)該會(huì)再多2個(gè)字段 對(duì)應(yīng)MySQL的spiritmaster與spirit表)

3.實(shí)例劃分規(guī)則

預(yù)計(jì)將劃分40個(gè)實(shí)例 玩家數(shù)據(jù)根據(jù)玩家的UID取模來(lái)分配到不同的實(shí)例中(是否再分庫(kù)未確定)

4.其他使用Redis劃分規(guī)則

目前莊園也有部分?jǐn)?shù)據(jù)使用redis 不過(guò)數(shù)據(jù)是放在一個(gè)單獨(dú)的redis實(shí)例中(119.147.164.24)

根據(jù)應(yīng)用不同使用不同的庫(kù)和key值 Key命名規(guī)則為[應(yīng)用名]-[UID] 例: GrowTimes-12345678 / StolenList-12345678

?

9、相關(guān)測(cè)試數(shù)據(jù)

//測(cè)試數(shù)據(jù)跟存儲(chǔ)的數(shù)據(jù)以及機(jī)器硬件配置等有關(guān),具體環(huán)境可能不太一樣,僅做參考。

9.1 啟動(dòng)關(guān)閉

啟動(dòng):1.6G AOF文件,132M RDB,啟動(dòng)時(shí)間107s,產(chǎn)生debug.log 128M,使用內(nèi)存1.71G。

2G數(shù)據(jù),啟動(dòng)約2分鐘,主從同步約2分鐘(內(nèi)網(wǎng))。

關(guān)閉:shutdown時(shí)間很短,一般1~2s,shutdown之前必須做save,save時(shí)間跟數(shù)據(jù)量有關(guān),一般幾秒。

9.2 數(shù)據(jù)量大小

簡(jiǎn)單set(set a 1),3萬(wàn)條約1M AOF,300K RDB;12萬(wàn)條約4M AOF,1M RDB。

set一條記錄,AOF會(huì)記錄些什么:

redis> set yuwei wangjiancheng

*3

$3

set

$5

yuwei

$3

wangjiancheng

9.3 備份打包

純文本AOF:

tar -zcf *.tar.gz *????????????? 1.9G / 20s / 16M /

tar -jcf *.tar.bz2 *???????????? 1.9G / 150s / 5.3M /

當(dāng)前線上使用redis,數(shù)據(jù)導(dǎo)入是二進(jìn)制流格式(AOF文件為數(shù)據(jù)文件,非文本文件),而且導(dǎo)入前已經(jīng)過(guò)一次壓縮,所以壓縮比例很低。

9.4 其他測(cè)試

實(shí)例配置文件中的數(shù)據(jù)目錄不存在,實(shí)例無(wú)法啟動(dòng)。

AOF邊寫邊打包(tar),不會(huì)造成數(shù)據(jù)損壞,tar只是讀文件。

Redis運(yùn)行過(guò)程中刪除數(shù)據(jù)目錄,不能bgsave,不能寫AOF,從庫(kù)能同步;從建目錄也不能bgsave,不能寫AOF。

Bgsave是放后臺(tái)去執(zhí)行的,所以bgsave;shutdown連寫在一起會(huì)出問(wèn)題,bgsave還未執(zhí)行完就已經(jīng)shutdown了。改用save。

主庫(kù)實(shí)例重啟后,從庫(kù)會(huì)重新”全同步”一次,保存數(shù)據(jù)與主庫(kù)一致。

網(wǎng)絡(luò)閃斷不會(huì)造成主從數(shù)據(jù)丟失,網(wǎng)絡(luò)恢復(fù)后可以續(xù)傳。

A實(shí)例快照文件,放B實(shí)例數(shù)據(jù)目錄啟動(dòng)(文件名改成B實(shí)例數(shù)據(jù)文件),OK!

執(zhí)行rewriteaof/ bgrewriteaof后,reidis根據(jù)內(nèi)存數(shù)據(jù),重新建立AOF,AOF重新排列順序。

?

10、客戶端連接redis

10.1 PHP

安裝phpredis:

phpredis軟件包地址(試了N個(gè)版本 只有這1個(gè)能在我們的定制系統(tǒng)環(huán)境裝上 蛋疼)

http://ftp.nluug.nl/pub/NetBSD/packages/distfiles/php-redis/nicolasff-phpredis-2.1.3-0-g43bc590.tar.gz

cd /dist/src

tar xzf ../dist/nicolasff-phpredis-2.1.3-0-g43bc590.tar.gz

cd nicolasff-phpredis-43bc590

/usr/local/php/bin/phpize

## 如果PHP是安裝的RPM包,需要安裝php-devel

./configure –with-php-config=/usr/local/php/bin/php-config

make && make install

配置php.ini

vi /usr/local/php/lib/php.ini?
加入:?
extension = “redis.so”

重啟 fastcgi 生效 /root/fastcgi_restart?
# php -m??? //查看是否有redis,檢查是否安裝成功。

Redis擴(kuò)展測(cè)試

測(cè)試代碼:

<?php$redis?=?new?Redis();$redis->connect(’127.0.0.1′,6379);$redis->set(‘test’,'hello?world!’);echo?$redis->get(‘test’);

?>

?

返回 hello world !表示成功

## 密碼

$redis->auth(‘My#redis’);

## Error:

configure: error: invalid value of canonical build

## ./configure

./configure –with-php-config=/usr/local/php/bin/php-config

10.2 C++

antirez-hiredis-3cc6a7f.tar.gz?????????????????? 340 KB

這個(gè)是官方的庫(kù),里面有個(gè)例子

跑這個(gè),帶參數(shù) ./hiredis-test

例子應(yīng)該是test.c

?

轉(zhuǎn)載于:https://www.cnblogs.com/fvsfvs123/p/4319240.html

總結(jié)

以上是生活随笔為你收集整理的Redis数据存储解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。