Redis安装及使用

一、简介

  简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。

  为什么要用 redis/为什么要用缓存?

  主要从“高性能”和“高并发”这两点来看待这个问题。

  高性能:假如用户第一次访问数据库中的某些数据,这个过程会比较慢,因为是从硬盘上读取的。如果该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存是直接操作内存,所以速度相对硬盘要快很多。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可!

  高并发:redis适合少写多读,符合缓存的适用要求。官方数据表示Redis读的速度是十几万次/s,写的速度是八万次左右/s 。单机redis支撑万级,如果十万以上建议用redis replication模式,也就是集群模式;

二、单机安装

2.1 版本 3.2.12
cd /opt
tar -zxvf redis-3.2.12.tar.gz
cd redis-3.2.12
# 编译
make
# 安装
cd ./src
sudo make install PREFIX=/usr/local/redis/redis
sudo cp /opt/redis-3.2.12/redis.conf /usr/local/redis/redis
# 配置,修改以下配置
sudo vim /usr/local/redis/redis/redis.conf
# 允许远程连接
#bind 127.0.0.1
# 保护模式,只允许本地链接
protected-mode no
# appendonly开启持久化
appendonly yes 
# 后台运行
daemonize yes
# 设置密码
requirepass Heheda@2024

# 启动服务(使用自定义配置)
/usr/local/redis/redis/bin/redis-server /usr/local/redis/redis/redis.conf
# 客户端连接
/usr/local/redis/redis/bin/redis-cli -h 127.0.0.1 -p 6379

参考:
Redis介绍和使用
Redis详解
Redis概述

2.2 版本 8.0.0

四、踩坑之路

1. 报错:ERR max number of clients reached

  redis maxclients 是 redis server 的重要配置,它决定了客户端的最大连接数量。如果超过了设置的 maxclients,redis 会给新的连接发送 max number of clients reached,并关闭连接。在 Redis 2.4 中,可以同时处理的最大客户端数量存在硬编码限制。 在 Redis 2.6 中,此限制是动态的:默认情况下,它设置为 10000 个客户端,除非 Redis.conf 中的 maxclients 指令另有说明。

  绝大部分原因是由于客户端很多空闲连接都没有被及时释放掉从而导致 connected_clients 非常高,其他可能就是maxclients 设置的太少了,或者就是软硬件存在限制。

客户端:

服务端:

  断开空闲连接:建议先断开部分客户端,不然由于报错:max number of clients reached,无法创建连接。使用 redis-cli 进入命令行,使用 info clients 查看客户端连接数,设置参数 timeout(客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能)自动断开连接,键入 config set timeout 600)。

  相关命令:

127.0.0.1:6379> CONFIG GET maxclients
1) "maxclients"
2) "10000"
127.0.0.1:6379> INFO clients
# Clients
connected_clients:9888
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
127.0.0.1:6379> CONFIG set maxclients 90000
OK
127.0.0.1:6379> CONFIG get maxclients
1) "maxclients"
2) "90000"

127.0.0.1:6379> client list
id=281556 addr=10.8.0.6:43462 fd=11425 name= age=336 idle=336 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=get
id=270210 addr=10.8.0.6:45090 fd=79 name= age=1035 idle=1035 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=get
id=273983 addr=10.8.0.6:53192 fd=3852 name= age=946 idle=946 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=get
...
127.0.0.1:6379> config set timeout 600
OK
127.0.0.1:6379> INFO clients
# Clients
connected_clients:1836
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

参考:解决Redis 连接池报错:ERR max number of clients reached

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小强签名设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值