![](https://img-blog.csdnimg.cn/458b2d857dc44a7ca44ab067f26cfad1.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
redis
文章平均质量分 82
redis是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作
Onism_DreamBoat
这个作者很懒,什么都没留下…
展开
-
Redis内存策略
不过在其database结构体中,有两个Dict,一个记录key-value,另一个记录key-TTL。当key的TTL到期之后,再次访问key是返回的值为nil(空),说明这个key就已经不存在了,其对应的内存也得到了释放,从而起到了内存回收的目的。**惰性删除:**并不是在TTL到期后就立刻删除key,而是在访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除。在Redis缓存中,可以通过expire命令为redis的key设置TTL(过期时间,或存活时间)。sed),最少最近使用。原创 2023-08-26 10:18:01 · 328 阅读 · 0 评论 -
Redis通信协议
因此,客户端发送命令好服务端响应结果的格式需要有一个规范(否则便无法正常通信),这个规范便是通信协议。’ ,与单行字符串格式一样,只是字符串是异常信息,例如:“-Error message\r\n”。’ ,后面跟上数字格式的字符串,以CRLF结尾。例如:“:10\r\n”。例如返回"OK": “+OK\r\n”。’ ,后面跟上单行字符串,以CRLF( “但目前默认使用的依旧是RESP2协议,错误(Errors):首字节是 ‘单行字符串:首字节是 ‘多行字符串:首字节是 ‘在Redis中采用的是。原创 2023-08-26 10:17:25 · 873 阅读 · 0 评论 -
Redis网络模型
异步IO的整个过程是非阻塞的(并不代表不阻塞就是异步),用户进程调用完异步API后就可以做其他事情,内核等待数据就绪并直接拷贝到用户空间后才会提交信号,通知用户进程。而在单线程情况下,只能依次处理IO事件,如果正在处理的IO事件恰好未就绪(数据不可读或不可写),线程就会被阻塞,所有IO事件都必须等待,性能自然会很差。IO是与内核建立SIGIO的信号关联并设置回调,当内核有FD就绪时,会发出SIGIO信号通知用户,期间用户应用可以执行其它业务,无需阻塞等待。虽然是非阻塞,但性能并没有得到提高。原创 2023-07-26 10:48:35 · 260 阅读 · 0 评论 -
Redis数据结构
每次执行新增、查询、修改、删除操作时,都检查一下dict.rehashidx是否大于-1,如果是则将dict.ht[0].table[rehashidx]的entry链表rehash到dict.ht[i],并且将rehashidx++。在rehash过程中,新增操作,则直接写入ht[1],查询、修改、删除则会在dict.ht[0]和dict.ht[1]依次查找并执行。Dict中的HashTable就是数组结合单向链表的实现,当集合中元素较多时,必然导致哈希冲突增多,链表过长,则查询效率会大大降低。原创 2023-07-26 10:33:01 · 134 阅读 · 0 评论 -
Redis多级缓存
传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,会存在以下问题:1.请求需要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈。2.Redis缓存失效时,会对数据库产生冲击。而多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能。原创 2023-07-26 10:30:46 · 983 阅读 · 0 评论 -
分布式缓存
分布式缓存日常测试和学习的过程中,我们都习惯用Redis单节点来进行操作。但是单节点Redis往往会暴露出一些问题。所以在企业开发的过程中,通常使用的是Redis集群来构建,从而来保证Redis的高可用性和健全性。原创 2023-07-03 10:40:44 · 189 阅读 · 0 评论 -
UV统计量
niqueisitor,即独立访客量,是指通过互联网访问、浏览该网页的自然人。一天内同一个用户多次访问该网站,只会记录一次。ageiew,即页面访问量或点击量,用户每访问网站的一个页面,记录一次PV,用户多次打开页面,则记录多次PV,通常用来衡量一个网站的流量。这两个统计的数值的大小与比值对于衡量一个网站的优劣具有一定的可靠性。原创 2023-07-03 10:32:15 · 445 阅读 · 1 评论 -
Redis实现用户签到
现在许多的APP或者网上应用为了提高用户的活跃度,都会设置一个每日签到的活动,签到完成后会给予一定的奖励,从而达到其目的。而记录用户的签到信息可以使用如下一张数据库表来进行记录。在用户数量并不多的情况下,数据库勉强能支撑的住。然而当用户量达到上千万级别,假设每天每年平均签到次数才10次,然而这张表一年的数据量却已经达到上亿条。这样的数量级已经很恐怖了,但现实数据往往不止这么点。这个时候,使用数据库来存储签到信息就不是一个很明智的选择了。原创 2023-07-03 10:09:18 · 567 阅读 · 0 评论 -
Feed流实现
关注推送也称为Feed流(直译为投喂),为用户持续的提供“沉浸式”的体验,通过无限下拉刷新获取新的信息(如,短视频、博客等)。获取信息的两种模式传统模式:需要用户自己去根据所需去查询内容。Feed模式:内容通过匹配用户需要,推送给用户。(节省用户时间)原创 2023-06-30 08:22:56 · 158 阅读 · 0 评论 -
初识消息队列
字面意思就是存放消息的队列(essageueue 简称Redis提供了三种不同的方式来实现消息队列:list结构:基于List结构模拟消息队列(LPUSH结合BRPOP,或者RPUSH结合BLPOP来实现)PubSub(ublishubscribe Redis 2.0引入的消息传递模型,消费者可以订阅一个或多个channel,生产者向对应channel发送消息后,所有订阅者都能收到相关消息):基于的点对点消息模型。原创 2023-06-30 08:22:51 · 77 阅读 · 0 评论 -
Redisson
Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。充分的利用了Redis键值数据库提供的一系列优势,基于Java实用工具包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。原创 2023-06-02 10:39:18 · 1055 阅读 · 1 评论 -
缓存存在的问题
导致缓存击穿的原因是,当用户使用不存在的请求访问缓存的时候,因为缓存中不存在数据,则会将请求打到数据库,然后数据库也没有相关请求的数据,则只能给用户端报错或返回空值。:缓存雪崩是指在同一时间段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。:缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样的缓存永远不会生效,这些请求都会打到数据库。)人使用大量这种无效的请求访问时,则会全部打到数据库,导致数据库宕机,或者拖慢其他正确请求的访问。下面对其进行一一学习。原创 2023-05-21 11:16:08 · 688 阅读 · 0 评论 -
缓存更新策略
先操作数据库,再删除缓存(下图为异常情况,但更新数据库操作一定比写入缓存速度慢,则此情况发生的概率很低)先删除缓存,再操作数据库(下图为异常情况,导致数据不一致,发生概率高)如何保证缓存与数据库的操作同时成功或失败(事务一致性)?先操作缓存还是先操作数据库?删除缓存还是更新缓存?原创 2023-05-21 11:15:53 · 517 阅读 · 0 评论 -
Redis常用命令
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。与Java中的TreeSet类似,但底层的数据结构差别很大。有序集合的成员是唯一的,但分数(score)却可以重复,其实现是一个跳表(SkipList)加Hash表。如需知道某个指令的具体使用方式,可以点击该指令(蓝色字体)超链接跳转至教程说明文档进行学习。该格式并非固定,也可以根据自己的需求来删除或添加词条。原创 2023-05-12 20:27:07 · 2413 阅读 · 0 评论 -
初始Redis
认识NoSQL,就不得不提到最熟悉不过的SQL(Structured Query Language)了,听过它的名字就可以知道,SQL是一种关系型数据库,存储的是结构化并且具有一定关联的数据,具备一套完整的命令语法。所以在以后的开发中,可以根据使用场景的不同来选择使用关系型数据库(SQL)或非关系型数据库(NOSQL),以及选择不同数据库类型。,泛指非关系型的数据库,NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。这二者的关联与区别,通过下面一张表格进行对比。原创 2023-05-12 20:21:18 · 508 阅读 · 0 评论