Redis

redis是基于内存的高速缓存,NoSQL数据库

缓存,是处理数据库性能问题的最常见策略之一。将数据库查询的结果保存在更快,更容易访问的位置(如内存)。将减少查询响应时间,减少数据库负载并降低成本。

概念

  • category:存储类别,用于指定某一类存储数据,可以类比的理解为数据库中的一张表,具有统一的过期时间,统一由框架设置,无需用户进一步的设置。

    • key:存储的,用于唯一定位一个value。 

    • value:存储的,经序列化后存储在后端存储中。 可以是String、list、set、sortedSet、Hash类型

  • 例:category名为upload-stats,用来存储上传文件的计数;key为dataset1/subset2,表示数据集;value为hash类型,使用不同field存储对应的值。

特点

  • 高性能:基于内存运行,低延迟,高吞吐量。
  • 多数据结构:支持字符串、哈希、列表、集合、有序集合等多种数据结构。
  • 持久化:支持将数据保存到磁盘,防止数据丢失。
  • 高可用:支持主从复制、哨兵模式和集群模式,实现高可用和扩展性。
  • 丰富功能:如发布/订阅、Lua 脚本、事务、TTL(Key过期)、管道(Pipelining)等。
  • 支持分布式
  • 操作具有原子性

数据类型

redis是key-value存储系统,value的类型主要有五种:string(字符串)、list(列表)、set(集合)、hash(哈希)、zset(有序集合)。

  • string:它是一个二进制安全的字符串,意味着它不仅能够存储字符串、还能存储图片、视频等多种类型, 最大长度支持512M

  • hash:该类型是由field和关联的value组成的map。其中,field和value都是字符串类型的。

数据结构

类型

适用场景

备注

String

String

Value 较小,模型简单的业务场景

Redis的 String 是二进制安全的,没有任何限制(基于此强烈不建议将任何数据都丢到String中)。

Bitmap

(1) 用户签到;
(2) 统计活跃用户。

  1. 适用存在大量活跃用户场景;

  2. bitmap不宜太大,会产生大value。

HyperLogLog

海量数据总数统计,可以容忍一定的误差

 

Hash

/

(1) 适合存储对象类型数据;
(2) 海量数据,可以分桶后适用hash存储,可以更节省空间,也可以提高操作效率。

  1. 避免产生大value;

  2. 避免全量取。

List

/

(1) 顺序插入,获取最近数据。或者分页查询;
(2) 实现栈或队列。

  1. Redis的List通过双向链表实现,头尾插入数据性能高,不适合链表中插入数据,会导致性能低效;

  2. 避免产生大value,控制队列大小;

  3. 避免全量取。

Set

/

(1) 数据去重;
(2) 集合间操作:共同好友、标签匹配等(Squirrel 客户端暂未支持)。

  1. 避免产生大value;

  2. 避免全量取。

SortedSet

Zset

排名/排行榜

  1. 避免产生大value,控制榜单、排名元素数量;

  2. 避免全量取。

GEO

地理位置信息

 

应用场景

  • 缓存系统:存储热点数据(高频读、低频写),提升性能
  • 计数器:分布式系统中使用redis的自增自减操作计数,避免并发安全问题
  • 分布式锁:分布式系统中加锁
  • 消息队列系统
  • 排行榜
  • 社交网络和实时系统。

使用

Jedis 和 Redisson 都是Java中对Redis操作的封装

Jedis:原生java Redis客户端,简单的封装了 Redis操作 的java API库,它的方法和Redis 的命令很类似。优点是简单易用、性能高、直接封装 Redis 命令

Redisson:高级 Redis 客户端,提供分布式和可扩展的数据结构,提供丰富的数据结构和分布式服务支持,如分布式锁、分布式集合、队列、执行器等,相比于Jedis 更加大。但Jedis相比于Redisson 更原生一些,更灵活。

注意的点

1、主从复制(集群)

2、持久化:缓存也需要小心处理,因为它们实际上是在另一个位置创建另一个信息副本。保持数据库和缓存同步并保持最新可能比您预期的更棘手。

 
posted @   zhegeMaw  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示