
redis
文章平均质量分 52
hamish-wu
普通程序员
展开
-
spring cache 的常规使用
逻辑,实现了一级缓存使用 caffeine 在服务的内存中,二级缓存在redis 中共享,平衡了内存资源的使用参考源码:https://github.com/xiaolyuh/layering-cache反例是一种在service 中实现的缓存逻辑反例可以实现功能但是 封装的不够优雅,代码复用性不佳。原创 2022-09-18 17:07:18 · 534 阅读 · 0 评论 -
Redis lua脚本 采坑实践
lua 中的慎用的命令redis 中一些命令耗时比较长,个人理解属于运维使用的命令例如 keysscan业务中切记 不要使用这些命令特别是 在lua 脚本中,由于lua 在redis执行的原子性, scan 命令也会随着key 的数量 耗时逐渐增大lua 脚本性能的影响lua 脚本一旦耗时比较长,就会影响redis 的其他命令执行,进而影响整个业务。lua 的脚本 建议耗时需要控制在50 毫秒之内。尽可能的避免大key阿里云给出的大key 标准参考:通常以Key的大小和Key中成员的数原创 2022-03-06 00:21:20 · 1276 阅读 · 1 评论 -
精通Redis[4]- Redis中的key
文章主要讲述Redis 中的key原创 2020-09-30 23:51:37 · 3416 阅读 · 0 评论 -
精通Redis[3] 之 Redis底层数据结构分析(二)
目录一、跳跃表1.1 跳跃表的实现二、整数集合2.1升级2.2降级三、压缩列表四、redis 对象一、跳跃表跳跃表(skiplist)是一种随机化的数据结构,由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出,是一种可以于平衡树媲美的层次化链表结构——查找、删除、添加等操作都可以在对数期望时间下完成Redis 中为什么使用跳跃表作者的意思是:比起红黑树,实现起来简单。1.1 跳跃表的实现原创 2020-09-27 20:47:13 · 230 阅读 · 0 评论 -
精通Redis2、Redis底层数据结构分析(一)
一.String 底层数据结构Sds (Simple Dynamic String,简单动态字符串)是 Redis 底层所使用的字符串表示,它被用在几乎所有的 Redis 模块中。Sds 在 Redis 中的主要作用有以下两个:实现字符串对象(StringObject);在 Redis 程序内部用作 char* 类型的替代品;1.1sds 优点在 C 语言中,字符串可以用一个 \0 结尾的 char 数组来表示。比如说, hello world 在 C 语言中就可以表示为 “hello原创 2020-09-27 10:19:38 · 478 阅读 · 0 评论 -
精通Redis 1 - Redis概览 和基础数据结构
一、Redis 概览1.1 Redis 全称是Remote Dictionary Service远程字典服务,从名称看,redis 最开始的设计思想,是一个远程的key-value 的存储服务,主要用来解决系统缓存,分布式的数据共享问题。程序员在学生阶段的课程设计往往是单实例(单体的应用),中小型公司起步的时候,往往也是从一个war 包开始,随着业务的发展慢慢的进化成分布式系统。1.2Redis定位于一个内存数据库内存保存数据,可以省去读取磁盘的时间,明显提高数据读取速度,redis之前,如果需要原创 2020-09-04 18:02:37 · 260 阅读 · 0 评论 -
精通Redis 11 之 Redis cluster槽的迁移原理分析
一、槽的迁移redis 提供redis-trlib 可以让运维手工调整槽位分配情况,set key 的时候可以通过在key字符串里嵌入tag 标记,强制把key 所挂的槽位等于tag 所在的槽位如图 所示,Redis 客户端向“缓存节点 1”发出请求,此时“缓存节点 1”正向“缓存节点 2”迁移数据,如果没有命中对应的 Slot,它会返回客户端一个 ASK 重定向请求并且告诉“缓存节点 2”的地址。客户端向“缓存节点 2”发送 Asking 命令,询问需要的数据是否在“缓存节点 2”上,“缓存节点原创 2020-06-18 14:40:53 · 2297 阅读 · 0 评论 -
Redis 缓存穿透、缓存雪崩、缓存击穿、缓存抖动
redis 常见面试内容,缓存穿透、缓存雪崩 、缓存击穿一、缓存穿透:本质:查询缓存中没有的数据,流量直接到了mysql造成这种现象的情况分多种 ,可以是黑客攻击,笔者遇到过有人利用技术手段获取系统中注册手机号信息。可以是系统调用出错。也可以是数据逻辑错误。举个例子:对于系统A,假设一秒 5000 个请求,结果其中 4000 个请求是黑客发出的恶意攻击。黑客发出的那 4000 个攻击,缓存中查不到,每次你去数据库里查,也查不到。举个栗子。数据库 id 是从 1 开始的,结果黑客发过来的请原创 2020-06-15 14:31:04 · 1324 阅读 · 0 评论