Redis

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 在实际项目开发中,我们往往需要面对海量用户和高并发的数据请求。MySQL 等传统关系型数据库面临着两大问题:1. 磁盘 IO 速度缓慢,单机读写速度不超过 10000 QPS,当数据库无法及时响应高并发的用户请求,请求积压进而导致数据库瘫痪。2. 数据关系复杂,扩展性差。不适合大规模集群。因此我们必须引入 NoSQL 技术去解决以上两个问题,以作为关系型数据库的补充。

Redis


Redis 介绍

NoSQL 技术

在实际项目开发中,我们往往需要面对海量用户和高并发的数据请求。MySQL 等传统关系型数据库面临着两大问题:

  1. 磁盘 IO 速度缓慢,单机读写速度不超过 10000 QPS,当数据库无法及时响应高并发的用户请求,请求积压进而导致数据库瘫痪。
  2. 数据关系复杂,扩展性差。不适合大规模集群。

因此我们必须引入 NoSQL 技术去解决以上两个问题,以作为关系型数据库的补充。

Redis 数据库

Redis 是一种基于内存的数据库技术。底层采用 C 语言开发,默认端口号 6379。

  1. Redis 数据库作为数据缓存,将业务数据直接存储在内存中进行读写,单机读/写速度可达 110000/84000 QPS,可以满足高速响应的需求。
  2. Redis 数据库只负责存储数据,数据之间不具有任何关联,易于扩容和伸缩。

Redis 应用场景

受限于内存的高昂成本,一般我们只使用 Redis 存储高频读写的关键数据。比如:

  1. 热点数据:如热点商品信息。
  2. 任务队列:如秒杀队列、抢购队列。
  3. 实时更新信息:如商品排行榜、公交到站信息。
  4. 时效性信息:如手机验证码、session 、 心跳(heartbeat)。

Redis 主要适用于内部系统的高频数据。在线上环境负载极大的情况下,使用 Redis 也不足以满足对数据读写的速度要求。

Redis 基本使用

安装指令

在控制台输入以下指令安装和使用 Redis:

$ sudo apt-get install redis-server       # 安装 Redis 数据库(仅限 Ubuntu 可用)
$ redis-server                            # 启动 Redis 数据库
$ redis-server --port 6380                # 启动 Redis 数据库,在指定端口
$ redis-server redis-6379.conf            # 启动 Redis 数据库,使用指定配置文件
$ redis-cli                               # 进入 Redis 控制台,在默认端口
$ redis-cli -p 6380                       # 进入 Redis 控制台,在指定端口Copy to clipboardErrorCopied
复制代码

基础配置

在 Redis 安装目录下的 redis.conf 文件是 Redis 默认配置文件,启动 Redis 数据库时默认加载。

daemonize no                     # 守护线程,打开后启动 Redis 控制台不提示
bind 127.0.0.1                   # 绑定 IP 地址,绑定后只能通过该地址访问 Redis
port 6379                        # 端口号
databases 16                     # 存储区域数量Copy to clipboardErrorCopied
复制代码

日志配置

Redis 总共支持四个日志级别:debug / verbose / notice / warning ,从前往后日志记录信息逐渐减少。通常情况下开发环境设为 verbose ,生产环境设为 notice 。

loglevel verbose                 # 日志级别
logfile 6379.log                 # 日志文件名Copy to clipboardErrorCopied
复制代码

持久化配置

默认使用 RDB 方式持久化数据,相关配置如下:

save 900 1                            # 自动同步数据条件,900s 内变更 1 个 key 值则持久化
save 300 10                           # 自动同步数据条件,300s 内变更 10 个 key 值则持久化
rdbcompression yes                    # 是否压缩数据,压缩后节省空间但读取较慢
rdbchecksum yes                       # 是否格式校验(默认开启),校验降低文件损坏风险但读取较慢
dbfilename dump.rdb                   # 保存文件名
dir ./                                # 保存文件位置Copy to clipboardErrorCopied
复制代码

可以在配置文件中改用 AOF 方式持久化数据,刷新文件条件有三种类型: always / everysec / no 。

appendonly yes                        # 选用 AOF 方式持久化
appendsync everysec                   # 刷新文件条件,每秒更新一次操作日志Copy to clipboardErrorCopied
复制代码

容量配置

对 Redis 数据库占用空间和客户链接做出限制。

maxclients 100                        # 客户连接数上限,超出后拒绝客户访问,为 0 表示不限制
timeout 300                           # 客户闲置时长,超出后关闭连接,为 0 表示不关闭
maxmemory 50                          # Redis 最大占用内存比例,为 0 表示全部可用
maxmemory-samples                     # Redis 随机选取数据数量
maxmemery-policy volatile-lru         # Redis 逐出策略Copy to clipboardErrorCopied
复制代码

多机配置

如果我们要设置集群,则需要进行以下配置:

cluster enabled yes                        # 开启集群
cluster-config-file nodes.conf             # 集群配置文件Copy to clipboardErrorCopied
复制代码

如果我们要设置主从服务器,则需要进行以下配置:

# 主服务器
requirepass 123456                    # 主服务器设置密码(可选)
repl-backlog-size 1mb                 # 缓冲区大小
# 从服务器
slaveof 127.0.0.1 6379                # 主服务器套接字,设置后自动连接
masterauth 123456                     # 主服务器密码
slave-serve-stale-data no             # 同步数据时是否允许读数据Copy to clipboardErrorCopied



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6天前
|
缓存 NoSQL Redis
Redis雪崩问题
Redis雪崩问题
33 1
|
6天前
|
缓存 NoSQL Redis
Redis雪崩
Redis雪崩
31 0
|
9月前
|
运维 NoSQL Shell
redis(2)
Redis Cluster 是 redis的分布式解决方案,在3.0版本正式推出 当遇到单机、内存、并发、流量等瓶颈时,可以采用Cluster架构方案达到负载均衡目的。 Redis Cluster之前的分布式方案有两种: 1)客户端分区方案: 优点分区逻辑可控,缺点是需要自己处理数据路由,高可用和故障转移等。 2)代理方案: 优点是简化客户端分布式逻辑和升级维护便利,缺点加重架构部署和性能消耗。 官方提供的 Redis Cluster集群方案,很好的解决了集群方面的问题
|
6月前
|
存储 JSON NoSQL
redis中的value
需要注意的是,redis中的value是以二进制形式存储的,因此在存储和读取数据时需要进行序列化和反序列化操作。常用的序列化方式包括JSON、Protobuf、Msgpack等。示例代码如下
47 0
|
7月前
|
消息中间件 缓存 NoSQL
Redis总结
Redis总结
22 0
|
8月前
|
消息中间件 存储 负载均衡
|
9月前
|
存储 缓存 NoSQL
Redis5
Redis5
101 0
|
9月前
|
存储 缓存 NoSQL
Redis初探
本篇深入介绍了Redis(Remote Dictionary Server)这一开源的内存数据存储系统,以及它在现代应用开发中的用途和优势。首先,我们对Redis进行了初步探索,解释了Redis是什么,它的主要特点以及适用场景。接着,我们详细讨论了Redis的安装和配置过程,提供了在Linux环境下安装Redis的步骤,并展示了如何启动和关闭Redis服务器。
206 0
|
NoSQL 安全 Redis
Redis7
Redis7
|
NoSQL Java Redis