企业实战(3) Redis服务部署和配置详解

简介: 企业实战(3) Redis服务部署和配置详解

前言:

10.png

环境介绍:

CentOS 7.5
Redis 5.0.0
gcc

下载:


http://download.redis.io/releases/


安装redis:

[root@localhost ~]#yum -y install gcc
[root@localhost ~]# mkdir redis
[root@localhost redis]# wget http://download.redis.io/releases/redis-5.0.0.tar.gz
[root@localhost ~]# cd redis/
[root@localhost redis]# tar -xvf redis-5.0.0.tar.gz 
redis-5.0.0/
redis-5.0.0/.gitignore
redis-5.0.0/00-RELEASENOTES
...
[root@localhost redis]# ls
redis-5.0.0  redis-5.0.0.tar.gz
[root@localhost redis]# cd redis-5.0.0
[root@localhost redis-5.0.0]# make && make install
...
make[1]: 离开目录“/root/redis/redis-5.0.0/src”
make[1]: 进入目录“/root/redis/redis-5.0.0/src”
Hint: It's a good idea to run 'make test' ;)
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: 离开目录“/root/redis/redis-5.0.0/src”

初始化配置:

[root@localhost redis-5.0.0]# ./utils/install_server.sh  //一路回车
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

管理服务:

[root@localhost redis-5.0.0]# /etc/init.d/redis_6379 stop  //停止服务
[root@localhost redis-5.0.0]# /etc/init.d/redis_6379 start  //启动服务
[root@localhost redis-5.0.0]# ps -C redis-server   //查看进程
   PID TTY          TIME CMD
 14540 ?        00:00:00 redis-server
[root@localhost redis-5.0.0]# ss -antulp | grep :6379   //查看端口
tcp    LISTEN     0      128    127.0.0.1:6379                  *:*                   users:(("redis-server",pid=14540,fd=6))

连接服务:

[root@localhost redis-5.0.0]# redis-cli 
127.0.0.1:6379> set name bob    //存储数据,变量名为name,值为bob
OK
127.0.0.1:6379> get name    //查看变量name的值
"bob"
127.0.0.1:6379> keys *       //查询已有的变量
1) "name"
127.0.0.1:6379> exit

常用命令:

- set 变量名 变量值                 //存储1个变量值
- mset 变量名 变量值 变量名 变量值...      //存储多个变量值
- get 变量名                   //查询1个变量的值
- mget 变量名                 //查询多个变量的值
- select 数据库编号0-15(默认只有16个库)      //切换库
- keys *                  //显示所有的变量名
- keys ?                  //显示只有一个字符的变量名
- keys a?                //显示以a开头的2个字符的变量名
- exists 变量名            //测试某个变量是否存在
- ttl 变量名               //查看变量生存时间(-1为永久生存)
- type 变量名               //查看变量的类型
- move 变量名 数据库编号   //移动某变量到指定库中
- expire 变量名 时间       //设置变量的有效时间
- del 变量名              //删除指定的变量
- flushall                //删除内存里所有的变量
- flushdb               //删除所在的库中的所有变量
- save                 //保存所有变量到硬盘中
- shutdown            //停止redis服务

常用配置项:

[root@ku1-50 ~]# vim /etc/redis/6379.conf
93  port 6379                //端口
70  bind 127.0.0.1           //IP地址
137 daemonize yes            //守护进程方式运行
187 databases 16             //数据库个数
172 logfile /var/log/redis_6379.log     //日志文件
533 # maxclients 10000           //并发连接数量
264 dir /var/lib/redis/6379      //数据库目录

内存管理:

11.png

默认使用noeviction清除策略。


优化设置:

[root@localhost redis-5.0.0]# vim /etc/redis/6379.conf
560 # maxmemory <bytes>           
                //最大内存
598 # maxmemory-policy noeviction    
               //默认使用的内存清除策略为noeviction
609 # maxmemory-samples 5    
              //默认选取变量(key)模板的个数(针对lru、ttl策略)为5个

连接配置:

[root@localhost redis-5.0.0]# vim /etc/redis/6379.conf
70 bind 192.168.2.159         //IP地址
93 port 6379                  //端口
508 requirepass 123456        //密码
[root@localhost redis-5.0.0]# /etc/init.d/redis_6379 stop
[root@localhost redis-5.0.0]# /etc/init.d/redis_6379 start
[root@localhost redis-5.0.0]# redis-cli    //未携带修改的参数
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
注意:如果在配置文件中修改了密码、端口、IP地址,那么在连接redis服务的时候必须带上更改的参数才可以连接上服务。
--明文密码连接
[root@localhost redis-5.0.0]# redis-cli -h 192.168.2.159 -a 123456       //密码明文连接
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.2.159:6379> keys *
1) "name"
192.168.2.159:6379> exit
--交互式密码连接
[root@localhost redis-5.0.0]# redis-cli -h 192.168.2.159   
192.168.2.159:6379> keys *         //不输入密码无法进行操作
(error) NOAUTH Authentication required.
192.168.2.159:6379> auth 123456
OK
192.168.2.159:6379> keys *
1) "name"
192.168.2.159:6379> exit

注意:


 在修改了以上三种参数(密码、端口、IP地址)中的任意一种后,都无法再使用脚本来停止服务(启动服务不影响),需要对脚本进行修改。

[root@localhost ~]# /etc/init.d/redis_6379 stop
Stopping ...
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...    //已经使用脚本无法停止服务了
[root@localhost ~]# ss -antulp | grep :6379
tcp    LISTEN     0      128    192.168.2.159:6379                  *:*                   users:(("redis-server",pid=14558,fd=6))
[root@localhost ~]# redis-cli -h 192.168.2.159 -a 123456 shutdown      
           //只能这样停止redis服务
[root@localhost ~]# ss -antulp | grep :6379

修改停止服务脚本

[root@localhost ~]# vim /etc/init.d/redis_6379
43  $CLIEXEC -p $REDISPORT shutdown
         ↓↓↓↓根据更改的参数将以上配置修改为↓↓↓↓
43 $CLIEXEC -h 192.168.2.159 -p 6379 -a 123456 shutdown
[root@localhost ~]# /etc/init.d/redis_6379 stop  //使用脚本停止服务
Stopping ...
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Redis stopped
[root@localhost ~]# ss -antulp | grep :6379   //停止服务成功
[root@localhost ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@localhost ~]# ss -antulp | grep :6379
tcp    LISTEN     0      128    192.168.2.159:6379                  *:*                   users:(("redis-s


相关文章
|
8月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
856 25
|
9月前
|
存储 NoSQL 前端开发
Redis专题-实战篇一-基于Session和Redis实现登录业务
本项目基于SpringBoot实现黑马点评系统,涵盖Session与Redis两种登录方案。通过验证码登录、用户信息存储、拦截器校验等流程,解决集群环境下Session不共享问题,采用Redis替代Session实现数据共享与自动续期,提升系统可扩展性与安全性。
539 3
Redis专题-实战篇一-基于Session和Redis实现登录业务
|
9月前
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
381 1
Redis专题-实战篇二-商户查询缓存
|
8月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
2660 8
|
12月前
|
缓存 监控 NoSQL
Redis 实操要点:Java 最新技术栈的实战解析
本文介绍了基于Spring Boot 3、Redis 7和Lettuce客户端的Redis高级应用实践。内容包括:1)现代Java项目集成Redis的配置方法;2)使用Redisson实现分布式可重入锁与公平锁;3)缓存模式解决方案,包括布隆过滤器防穿透和随机过期时间防雪崩;4)Redis数据结构的高级应用,如HyperLogLog统计UV和GeoHash处理地理位置。文章提供了详细的代码示例,涵盖Redis在分布式系统中的核心应用场景,特别适合需要处理高并发、分布式锁等问题的开发场景。
660 42
|
11月前
|
NoSQL 安全 Linux
设置Redis在CentOS7上的自启动配置
这些步骤总结了在CentOS 7系统上设置Redis服务自启动的过程。这些命令提供了一个直接且明了的方式,确保Redis作为关键组件在系统启动时能自动运行,保障了依赖于Redis服务的应用的稳定性和可用性。
817 9
|
12月前
|
机器学习/深度学习 存储 NoSQL
基于 Flink + Redis 的实时特征工程实战:电商场景动态分桶计数实现
本文介绍了基于 Flink 与 Redis 构建的电商场景下实时特征工程解决方案,重点实现动态分桶计数等复杂特征计算。通过流处理引擎 Flink 实时加工用户行为数据,结合 Redis 高性能存储,满足推荐系统毫秒级特征更新需求。技术架构涵盖状态管理、窗口计算、Redis 数据模型设计及特征服务集成,有效提升模型预测效果与系统吞吐能力。
1314 10
|
12月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
3376 7
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
缓存 NoSQL Java
Redis+Caffeine构建高性能二级缓存
大家好,我是摘星。今天为大家带来的是Redis+Caffeine构建高性能二级缓存,废话不多说直接开始~
1650 0