一、前言
环境:centos7 redis-6.2.6.tar.gz、redis 7.2.3版本测试成功
二、redis使用场景
很多大型电商网站、视频直播和游戏应用等,存在大规模数据访问,对数据查询效率要求高,且数据结构简单,不涉及太多关联查询。这种场景使用Redis,在速度上对传统磁盘数据库有很大优势,能够有效减少数据库磁盘IO,提高数据查询效率,减轻管理维护工作量,降低数据库存储成本。Redis对传统磁盘数据库是一个重要的补充,成为了互联网应用,尤其是支持高并发访问的互联网应用必不可少的基础服务。电商网站的商品类目、推荐系统以及秒杀抢购活动,适宜使用Redis缓存数据库。
例如秒杀抢购活动,并发高,对于传统关系型数据库来说访问压力大,需要较高的硬件配置(如磁盘IO)支撑。Redis数据库,单节点QPS支撑能达到10万,轻松应对秒杀并发。实现秒杀和数据加锁的命令简单,使用SET、GET、DEL、RPUSH等命令即可。
1、(视频直播)消息弹幕:直播间的在线用户列表,礼物排行榜,弹幕消息等信息,都适合使用Redis中的SortedSet结构进行存储。例如弹幕消息,可使用ZREVRANGEBYSCORE排序返回,在Redis 5.0中,新增了zpopmax,zpopmin命令,更加方便消息处理。
2、(游戏应用)游戏排行榜:在线游戏一般涉及排行榜实时展现,比如列出当前得分最高的10个用户。使用Redis的有序集合存储用户排行榜非常合适,有序集合使用非常简单,提供多达20个操作集合的命令。
3、(社交APP)返回最新评论/回复:在web类应用中,常有“最新评论”之类的查询,如果使用关系型数据库,往往涉及到按评论时间逆排序,随着评论越来越多,排序效率越来越低,且并发频繁。使用Redis的List(链表),例如存储最新1000条评论,当请求的评论数在这个范围,就不需要访问磁盘数据库,直接从缓存中返回,减少数据库压力的同时,提升APP的响应速度。
三、redis的数据流
四、安装必要依赖、gcc编译工具
五、安装Redis
六、创建目录
刚才我们上面看到redis的/usr/local/redis-6.2.6
安装目录默认只有一个bin目录,为了规范一点,我们手动创建一下目录:
七、复制配置文件
Redis的启动需要指定配置文件,在我们解压的源码包里就有默认配置文件,为了方便。这里把它复制一份到Redis的安装目录下:
八、修改配置文件
默认的Redis配置文件是以前台的方式运行Redis,这里需要修改一下配置,让Redis启动的时候在后台守护进程方式运行,以及设置登陆密码等。
九、启动redis服务
十、问题排查
#第一次启动redis可能会看到日志报下面的3个警告:
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
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.
WARNING: you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix thisissue 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 thesetting after a reboot. Redis must be restarted after THP is disabled.
按照提示解决即可:
vim /etc/sysctl.conf
#打开/etc/sysctl.conf文件,添加下面2行
net.core.somaxconn = 1024
#指定内核参数,默认值128对于负载很大的服务是不够的,改为1024或2048或者更大
vm.overcommit_memory = 1
#内存的分配策略,设置为1表示允许内核分配所有的物理内存
修改完成后保存,执行:sysctl -p 使修改立即生效
使用root账号执行:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
为了防止重启服务器失效,将
echo never > /sys/kernel/mm/transparent_hugepage/enabled
添加到/etc/rc.local开机自启中即可。
十一、联通性检查
[root@DB-Node1 bin]# ./redis-cli -h 192.168.1.137 -p 6379
OK
十二、配置环境变量
# vim ~/.bashrc
alias redis-cli='/usr/local/redis7/bin/redis-cli'
alias redis-server='/usr/local/redis7/bin/redis-server'
# source ~/.bashrc
版权声明:本文内容始发于CSDN>作者:MssGuo,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
始发链接:https://blog.csdn.net/MssGuo/article/details/114283015
在此特别鸣谢原作者的创作。
此篇文章的所有版权归原作者所有,商业转载建议请联系原作者,非商业转载请注明出处。