LRU算法LRU(Least Recently Used),即最近最少使用,是一种缓存置换算法。在使用内存作为缓存的时候,缓存的大小一般是固定的。当缓存被占满,这个时候继续往缓存里面添加数据,就需要淘汰一部分老的数据,释放内存空间用来存储新的数据。这个时候就可以使用LRU算法了。其核心思想是:如果一个数据在最近一段时间没有被用到,那么将来被使用到的可能性也很小,所以就可以被淘汰掉。LRU在Redi
转载 2023-08-14 16:43:38
43阅读
最近研究了一下redis里面字典的实现redis作为高效的内存存储而被广泛使用,内部实现的db结构以及多种高效的数据结构,其底层基本上就是靠字典来实现。而其字典数据结构是基于哈希表来实现的,其中一些特性的实现十分精妙。1.数据结构节点数据结构因为是基于开链法的哈希表实现,所以需要维护了一个next节点typedef struct dictEntry { void *key; un
转载 2023-07-04 15:43:25
52阅读
redis虽然是一个非关系型内存数据库, 但是它支持传统的关系型数据库的事务。redis事务提供了一种将多个命令请求打包,然后一次性、按照顺序地执行多个命令的机制,并且在事务执行的期间,服务器不会中断事务而去执行其他不在事务中的命令请求,它会把事务中所有的命令都执行完毕才会去执行其他的命令。事务实现命令Redis中提供了multi、discard、exec、watch、unwatch这几个命令来实
转载 2023-09-02 18:59:37
47阅读
String类型 可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512M 实现方式: 一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。 常用命令:set key value :设置key对应的st
转载 2023-08-15 17:30:34
40阅读
redisRedis:remote dictorytion server 远程字典服务 是一种基于内存,亦可持久化的key-value数据库。实现高性能的3大原因基于单线程实现,避免多线程带来的线程切换开销,单线程中使用IO多路复用处理并发大部分操作基于内存,读写操作不需要磁盘IO采取简单的数据结构,例如跳表、哈希表redis数据结构字符串redis中字符串的实现为 :SDS 简单动态字符串其实现
转载 2023-07-04 18:06:15
35阅读
Redis的字符串是如何实现的前言为什么不用char*传统设计操作复杂度高SDS的设计SDS的高效操作创建sds字符数组拼接长度获取预分配内存空间节省内存的设计 前言字符串在日常开发中应用得比较普遍,对于Redis来说,键值对中的键是字符串,值也是字符串。比如在Redis中写入一条客户信息记录姓名、性别、爱好等。 在Redis这种内存数据库中,由于字符串被广泛的应用,在设计字符串时基于以下几点来
redis做了一个用作字符串的SDS,除了一些不需要修改的场景,都是用SDS C字符串的底层实现总是一 个N+1个字符长的数组
转载 2023-08-03 09:13:31
33阅读
前言这篇文章介绍下如何实现redis实现分布式锁及原理简介 这篇文章介绍下如何实现redis实现分布式锁及原理简介原理简介redis 获取分布式锁使用lua脚本的命令setnxpexpire(提供了毫秒的过期时间,expire提供了基于秒的过期时间)lua脚本(保证脚本中的命令被一起执行 不间断)redis删除锁使用lua脚本的命令先执行get判断获取的值是否是自己设置的如果是的话 则执行d
转载 2023-09-02 19:35:41
143阅读
1.概述1.1 StringStrings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.常用命令: set,get,decr,incr,mget 等。应用场景:String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类.即可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受Redis的定时持久化,操作日志及 Re
转载 2023-08-15 13:42:18
21阅读
PHP Redis秒杀系统总结 今天,我在公司遇到一个同事,问我秒杀业务的流程,我索性整理了一下原来的资料,给大家分享一下。个人整理------仅供参考。 一,秒杀的基本流程 秒杀列表秒杀详情页    倒计时判断用户参加活动的状态   库存(判断)修改库存创建订单定时任务守护进程 二,流程详解首先,我们做秒杀,流程基本是以上8个步骤,当然这
转载 2023-09-01 23:10:28
135阅读
Redis秒杀场景Hi,我是阿昌,今天学习记录的是关于Redis秒杀场景的内容。秒杀是一个非常典型的活动场景,比如,在双 11、618 等电商促销活动中,都会有秒杀场景。秒杀场景的业务特点是限时限量,业务系统要处理瞬时的大量高并发请求,而 Redis 就经常被用来支撑秒杀活动。不过,秒杀场景包含了多个环节:秒杀前秒杀中秒杀后每个阶段的请求处理需求并不相同,Redis 并不能支撑秒杀场景的每一个环节
前言redis的lru是近似lru算法,其实就是每个key里面都有存,最后一次访问这个key的时间戳24位1.因为lru需要很多内存,额外的内存,所以用近似lru2.那么我们就可以用随机采样法淘汰元素,而且处理方式是懒惰删除。3.一旦发现内存超过阈值,maxmermory,那么就随机采样出五个key,淘汰最久的key,如果淘汰后还是超过,那么久继续淘汰直到内存低于maxmemory;这个5可设置~
先说今天分享一个之前写的基于redis和kafka实现类似银行叫号前言之前作过某风控系统,系统内会设计调用大量的三方数据,导致每一笔风控审核的时候会出现某一笔的消费延迟导致上游的消费速度显著下降,从而出现严重的卡单(kafka)。确定方案之前通过kafka消费主要是,并发消费,其类比的生活模式是早期银行排队,也就是kafka队列类似银行的多个窗口。假设银行规定,排队之后不能更换窗口,一个数据类似是
转载 2023-09-01 23:09:31
95阅读
今天介绍个基于redis实现自增流水号的一个案例 为什么使用redis实现自增流水号呢? 因为现在的项目很多都整合redis,而且redis是单线程,且基于内存操作,速度快,实现自增流水号代码也简单小编实现的方式是Vue+springBoot,但是Vue就是做个页面按钮为了测试,你们可以写个测试类来测试,现在放上后端代码,亲测有效!!!首先先引入依赖,在pom文件加<!--redis--&
转载 2023-05-25 11:09:04
78阅读
简介采用了redis来作为限流器的实现redis作为高性能缓存系统,性能上能够满足多机之间高并发访问的要求redis有比较好的api来支持限流器令牌桶算法的实现对于我们的系统来说,通过spring data redis来操作比较简单和常见,避免了引入新的中间件带来的风险但是我们也知道,限流器在每次请求令牌和放入令牌操作中,存在一个协同的问题,即获取令牌操作要尽可能保证原子性,否则无法保证限流器是否
redis限流的实现方式有3种,分别是:1、基于Redis的setnx的操作,给指定的key设置了过期实践;2、基于Redis的数据结构zset,将请求打造成一个zset数组;3、基于Redis的令牌桶算法,输出速率大于输入速率,就要限流。redis限流的实现方式有3种,分别是:第一种:基于Redis的setnx的操作我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CA
转载 2023-07-28 14:20:27
71阅读
Redis通信协议使用的是RESP协议,协议具有容易实现、解析快、人类可读等特点,协议的每部分都是以\r\n结尾。redis客户端与服务器端通信也是通过socket网络编程,我们先来模拟一个redis服务器端拦截请求,使用socketServer开启一个6379端口,接收打印信息@SpringBootApplication public class RedisdemoApplication {
转载 2023-08-20 16:58:52
40阅读
1、前言实现一个排版榜,我们通常想到的就是mysql的order by 简单粗暴就撸出来了。但是这样真的优雅吗?数据库是系统的瓶颈,这是众所周知的。如果给你一张百万的表,让你排序做排行榜,花费的时间是十分可怕的。不如缓存吧,order by的时候强制使用索引。但是这样真的优雅吗?我们分析一下排行榜,一个用户一个排名,意味着要去重,这时我们会想到Java的一种数据结构Set。不过Set又是无序的。有
redis高可用的几种实现方式阅读提示利用主从复制的方式实现高可用什么是主从复制主从复制的原理主从复制的几大优缺点主从复制的构建过程利用哨兵的方式实现高可用什么是哨兵哨兵的原理哨兵的几大优缺点哨兵的构建流程利用集群的方式实现高可用什么是集群集群的原理集群的几大优缺点集群的构建流程 阅读提示以下的文章都是我对redis高可用的理解,并不能保证理解正确,只是为了做笔记,来记录当前我对redis的理解
转载 2023-07-07 15:07:53
77阅读
简述Redis事务实现 1、事务开始 MULTI命令的执行,标识着一个事务的开始。MULTI命令会将客户端状态的 flags 属性中打开 REDIS_MULTI 标识来完成的。 2、命令入队 当一个客户端切换到事务状态之后,服务器会根据这个客户端发送来的命令来执行不同的操作。如果客户端发送的命令为MULTI、EXEC、WATCH、DISCARD中的一个,立即执行这个命令,否则将命令放入一个事务队列
转载 2023-06-25 20:22:00
64阅读
  • 1
  • 2
  • 3
  • 4
  • 5