🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
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重启后即可正常运行,两个系统之间数据不会再有影响,问题解决。本教程是本着解决问题的目的,但是解决问题的方法不止一种,如有其他更好的方法,欢迎交流讨论,共同进步!