1. redis是一種支持Key-Value等多種數據結構的存儲系統。可用于緩存,事件發布或訂閱,高速隊列等場景。該數據庫使用ANSI C語言編寫,支持網絡,提供字符串,哈希,列表,隊列,集合結構直接存取,基于內存,可持久化。關于他的定義我們就不多說了,可以自行度娘,很詳細。今天我們是專門采坑的,避免走彎路。一:場景應用服務器:阿里云ECS 雙核 8G CentOS+高效云盤服務器管理:寶塔場景:同一臺服務器部署兩套同樣的系統,如wordpress,微擎等。數據庫結構、表名相同,解析兩個二級域名,會出現共用redis數據混亂問題。下面以微擎系統+人人商城為例。微擎是做什么的?微擎是一款小程序和公眾號管理系統,可以實現微信平臺(mp.weixin.qq.com)不能實現的功能,例如商城,餐飲,酒店,汽車,門店,同城,各類行業解決方案,營銷,推廣,吸粉,游戲,物聯網和人工智能等功能。二:正題開始在系統部署到生產環境后,為了方便測試,我們都會單獨部署一套測試系統,如果你有兩臺服務器那么以下內容可以忽略。如果沒有,繼續往下看。如果測試系統和生產系統部署在一起,在使用redis的時候就會出現兩套系統數據相互影響的問題,例如商城會員列表的分頁統計。在操作會員增刪的時候,兩套系統會員總數是同步的,不過還好會員實際數據是沒變化的。其他使用到redis的地方也是一樣同步的,例如直播間,在測試系統操作后,生產環境的系統也會同步更新狀態,這就比較尷尬了。在找到問題的根源是redis后,嘗試了很多方法,但都不能完美解決問題,也查詢了谷歌、度娘上的相關資料,大家的解決方法都是零零散散,很多還是沒有經過考慮就放上去了,還好最后還是解決了這個問題,下面我們就按步驟來實操一下。三:實操環節最終我們實現的就是增加一個redis實例端口,用于測試系統單獨調用,而不是兩套系統共用一個redis實例端口。其中有很多配置的地方,我們一一講解。先決條件:兩套系統已經搭建完畢,直播功能已經配置完畢。redis默認端口:6379(生產)新增redis端口:6380(測試)直播互動服務端口:9501(生產)、9502(測試)第一步:開放端口寶塔面板 :端口初始為未使用狀態,在所有配置和服務都開啟后,狀態全部變為正常阿里云:第二步:redis拷貝配置文件執行命令:#cp /www/server/redis/redis.conf /www/server/redis/redis_6380.conf修改redis_6380.conf文件相應代碼后保存:port 6380pidfile /var/run/redis_6380.pidlogfile "log_6380.log" #日志打印,方便看報錯信息dbfilename dump_6380.rdbdaemonize yes #配置為后臺啟動,否則控制臺命令啟動后不能關閉窗口執行命令:#/www/server/redis/src/redis-server /www/server/redis/redis_6380.conf#ps auxf | grep redis-server如看到上圖結果,則端口啟動成功。在啟動新加的6380端口時可能redis會報以下錯誤,一一解決即可。1、WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.解決:執行命令:# echo 511 >/proc/sys/net/core/somaxconn# echo "net.core.somaxconn = 551" > /etc/sysctl.conf2、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.解決:執行命令:# echo 1 > /proc/sys/vm/overcommit_memory# echo "vm.overcommit_memory=1" >> /etc/sysctl.conf3、WARNING you have Transparent Huge Pages (THP) support enabled in your kernel.This will create latency and memory usage issues with Redis.To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root,and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.解決:執行命令:#echo never > /sys/kernel/mm/transparent_hugepage/enabled在 /etc/rc.local 文件中添加自此redis6380端口正常啟動,下面我們來修改系統默認調用端口。第三步:修改微擎系統配置文件配置文件目錄:/www/wwwroot/xxx.com/data/config.php想用直播的需配置:/www/wwwroot/xxx.com/addons/ewei_shopv2/core/socket/socket.config.php/www/wwwroot/xxx.com/addons/ewei_shopv2/core/socket/server.php第四步:修改PHP配置(這里用了兩個php服務,php5.6(6379)、php5.5(6380),用一個的這里要不要修改還要測試)第五步:重啟php,redis啟動直播服務:/www/server/php/55(php版本)/bin/php -f /www/wwwroot/xxx.com(自己網站目錄)/addons/ewei_shopv2/core/socket/server.php重啟后即可正常運行,兩個系統之間數據不會再有影響,問題解決。本教程是本著解決問題的目的,但是解決問題的方法不止一種,如有其他更好的方法,歡迎交流討論,共同進步!