
Redis学习
小星有大理想
这个作者很懒,什么都没留下…
展开
-
Redis基础原理学习(一)
1、Redis使用SDS减少修改字符串时带来的内存重分配次数。SDS通过未使用空间解除了字符串长度和底层数组长度之间的关联,在SDS中buf数组的长度不一定就是字符数量加1,数组里面可以包含未使用的字节,而这些字节的数量就由SDS的free属性记录。2、通过未使用空间,SDS实现了空间预分配和惰性空间释放两种优化策略。2.1 空间预分配策略用于优化SDS的字符串增长操作:当SDS的API对一个SDS进行修改,并且需要对SDS进行空间扩展的时候,程序不仅会为SDS分配所必须要的空间,还会为SDS分配额外的原创 2021-06-02 14:43:28 · 75 阅读 · 0 评论 -
Redis学习之事件
1、Redis服务器是一个事件驱动程序,服务器处理的事件分为时间事件和文件时间两类。2、文件事件是对套接字的抽象:当套接字变为可应答(acceptable)、可写(writable)或者可读时,文件事件就会产生。3、文件事件分为AE_READABLE事件(读事件)和AE_WRITABLE事件(写事件)。4、时间事件分为:定时事件和周期性事件,定时事件只在指定的时间到达一次,而周期性事件每隔一段时间到达一次。5、服务器在一般情况下只执行aerverCron函数这一个周期性事件6、时间事件的实际处理时原创 2021-05-23 15:36:11 · 98 阅读 · 0 评论 -
Redis学习之过期键的删除策略
1、定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。优点:对内存友好,缺点:占用太多CPU时间,影响服务器的响应时间和吞吐量。2、惰性删除:程序只会在取出键时才对键进行过期检查,这可以保证删除过期键的操作只会在非做不可的情况下进行,并且删除的目标仅限于当前处理的键,这个策略不会在删除其他无关的过期键上花费时间。缺点:浪费太多内存,有内存泄漏的危险,有点:对CPU时间友好定期删除:每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行的时长和频原创 2021-05-17 20:52:42 · 82 阅读 · 0 评论 -
SpringBoot学习之使用拦截器和Redis实现接口幂等性
接口幂等性什么是接口幂等性:接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。例如:用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条,这就是没有保证接口的幂等性。导入依赖<dependencies> <dependency> <groupId>原创 2021-04-08 09:58:48 · 164 阅读 · 0 评论 -
SpringBoot学习之nginx简单使用
创建工程,导入session,web,redis的依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dependency原创 2021-04-06 09:55:11 · 602 阅读 · 0 评论 -
Redis学习之使用spiped
安装wget https://github.com/Tarsnap/spiped/archive/refs/tags/1.6.1.tar.gztar -zxvf 1.6.1.tar.gzcd spiped-1.6.1makemake install生成随机秘钥文件dd if=/dev/urandom bs=32 count=1 of=redis.key启动spipedspiped -d -s '[192.168.65.128]:6479' -t '[192.168.65.128]:63原创 2021-04-04 16:45:09 · 295 阅读 · 0 评论 -
Redis学习之哨兵模式
配置sentinel.conf文件sentinel monitor mymaster 127.0.0.1 6379 1sentinel auth-pass mymaster hx启动哨兵redis-sentinel sentinel.conf关闭6379后,哨兵机制会自动选出主机原创 2021-03-31 16:13:33 · 70 阅读 · 0 评论 -
Redis学习之主从同步
CAP理论C:consistent 一致性A:availability 可用性P:partition tolerance 分布式容忍性在一个分布式系统中,这三个只能满足两个:在一个分布式系统中,P 肯定是要实现的,C 和 A 只能选择其中一个。大部分情况下选择了 AP。 在 Redis 中,实际上就是保证最终一致。Redis实现主从复制主从复制可以扩展 Redis 性能,Redis 的主从复制和MySQL数据库的主从复制类似,从机能够精确的复制主机上的内容。实现了主从复制之后,一方面能够实现数据原创 2021-03-31 15:39:29 · 152 阅读 · 1 评论 -
Redis学习之事务处理
在 Redis 中,常用于事务相关的指令:multiexecdiscardwatchmulti 命令用于标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 exec 命令原子性(atomic)地执行。组队的过程中可以通过 discard 来放弃组队,取消事务,放弃执行事务块内的所有命令。Redis 中的事务本身并不能算作原子性。它仅仅具备隔离性,也就是说当前的事务可以不被其他事务打断。由于每一次事务操作涉及到的指令还是比较多的,为了提高执行效率,我们在使用客户端的时原创 2021-03-29 16:44:45 · 93 阅读 · 0 评论 -
Redis学习之持久化
在 Redis 中,数据库持久化一共有两种方案:1、快照方式2、AOF日志快照的原理Redis使用操作系统的多进程机制来实现快照持久化:Redis 在持久化时,会调用 glibc函数fork一个子进程,然后将快照持久化操作完全交给子进程去处理,而父进程则继续处理客户端请求。在这个过程中,子进程能够看到的内存中的数据在子进程产生的一瞬间就固定下来了,再也不会改变,也就是为什么Redis持久化叫做快照。在Redis中使用快照在Redis中,默认情况下,快照持久化的方式就是开启的。默认情况下会产生一个原创 2021-03-29 16:17:49 · 80 阅读 · 0 评论 -
Redis安装redis-cell踩坑
在redis安装redis-cell后出现错误把启动日志打印到redis.log中10066:C 22 Mar 2021 21:01:45.320 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo10066:C 22 Mar 2021 21:01:45.320 # Redis version=6.2.1, bits=64, commit=00000000, modified=0, pid=10066, just started10066:C 22 M原创 2021-03-23 08:55:32 · 690 阅读 · 0 评论 -
Redis学习之限流(一)
新建RateLimiter类进行简单限流package org.hx.distribute_lock;import redis.clients.jedis.Jedis;import redis.clients.jedis.Pipeline;import redis.clients.jedis.Response;public class RateLimiter { private Jedis jedis; public RateLimiter(Jedis jedis) {原创 2021-03-22 10:49:14 · 121 阅读 · 0 评论 -
Redis学习之布隆过滤器
布隆过滤器安装cd redis-6.2.1git clone https://github.com/RedisBloom/RedisBloom.gitcd RedisBloom/makecd ..redis-server redis.conf --loadmodule ./RedisBloom/redisbloom.so把布隆过滤器配置到redis配置文件里vi ../redis.conf# Load modules at startup. If the server is not a原创 2021-03-21 17:03:43 · 147 阅读 · 0 评论 -
Redis学习之HyperLogLog
Redis原创 2021-03-21 11:27:05 · 100 阅读 · 0 评论