Redis缓存设计原理及实战

Redis是一个高性能的内存数据库,常用于缓存层以减轻数据库压力,提高系统性能。其内部采用单线程I/O复用模型,并提供多种数据结构如字符串、列表、集合、有序集合等。数据持久化包括定时快照和AOF日志,通过主从复制实现高可用。Redis支持分布式集群,使用hash槽策略分配数据。在内存管理上,Redis有数据淘汰策略以应对内存不足的情况。本文涵盖了Redis的原理、持久化、集群和应用实践。
摘要由CSDN通过智能技术生成
  • 作用

降低应用对物理数据源访问的频次,提高应用的运行性能。

缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。

通常直接查询 MySQL,但在高并发下,大量查询 MySQL 数据库会导致数据库性能变慢,解决方案就是在应用层与 MySQL 之间搭建一个 Cache 层,让请求先访问 Cache,就能大大降低MySQL的压力,还能提高系统的性能。

缓存虽然无需考虑安全性,但需结合业务影响考虑何时失效,和 MySQL 的数据一致性容忍度如何。

[](()Redis缓存

======================================================================

Redis是一个远程内存数据库(非关系型数据库),性能强劲,具有复制特性以及解决问题而生的独一无二的数据模型

  • Redis数据模型图

Redis内部使用一个redisObject对象来标识所有的key和value数据,redisObject最主要的信息:

  • type代表一个value对象具体是何种数据类型

  • encoding是不同数据类型在Redis内部的存储方式

比如——type=string代表value存储的是一个普通字符串,那么对应的encoding可以是raw或是int,如果是int则代表Redis内部是按数值类型存储和表示这个字符串。

raw列为对象的编码方式

  • 字符串可以被编码为raw(一般字符串)或Rint(为了节约内存,Redis会将字符串表示的64位有符号整数编码为整数来进行储存)

  • 列表可以被编码为ziplist或linkedlist,ziplist是为节约大小较小的列表空间而作的特殊表示

  • 集合可以被编码为intset或者has

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值