Redis
文章平均质量分 70
redis实战相关开发
May Hacker
无所谓才能无所畏!我会变得更强!
展开
-
对Redis管道的理解
Redis 管道原创 2022-09-06 15:26:47 · 896 阅读 · 0 评论 -
Linux I/O多路复用整理
前言I/O多路复用的实现方式有Select、Poll、Epoll,I/O多路复用是单个线程记录跟踪每一个I/O流的状态来同时管理多个I/O流,一旦发现有I/O流( 表现为文件描述符 )可以进行无阻塞I/O访问时候,就进行数据处理。这可以避免来一个请求就分配一个线程的弱点,Selectselect 会修改传入的参数数组select 不会告诉你具体是哪个I/O流有数据,你得自己轮询select只能监视1024个连接select不是线程安全的Poll没有1024限制与Select一样,不原创 2021-12-08 21:24:09 · 1675 阅读 · 0 评论 -
Redis 键过期策略和内存淘汰策略
惰性删除不去主动删除过期的key,当需要用到这个key的时候,去检查是否已经过期,过期就删除key定期删除划定一定的时间范围,也就是轮询,判断key是否已经过期,过期就删除key内存淘汰策略需要注意的是不管是定期删除还是惰性删除都不是一种完全精准的删除,就还是会存在key没有被删除掉的场景,所以就需要内存淘汰策略进行补充。内存淘汰策略有以下几种:noeviction:当内存使用超过配置的时候会返回错误,不会驱逐任何键allkeys-lru:加入键的时候,如果过限,首先通过LRU算法驱原创 2021-12-16 15:04:34 · 325 阅读 · 0 评论 -
Redis skiplist跳表的实现总结
为什么使用跳表?对于单链表,即使是有序链表,想在其中查找某个数据,也只能从头到尾遍历,查找效率低,时间复杂度是O(n)。跳表实现跳表是基于有序单链表建索引来实现的。时间复杂度和空间复杂度时间复杂度是O(logn),空间复杂度是O(n)。跳表索引动态更新?当频繁地向跳表中插入数据时,如果插入过程不伴随着索引更新,就有可能导致某2个索引节点之间数据非常多,在极端地情况下,跳表就会退化成单链表。作为一种动态数据结构,为了避免性能下降,我们需要在数据插入,删除的过程中,动态地更新跳表的索引结构。原创 2021-11-28 20:56:30 · 777 阅读 · 0 评论 -
Redis 哨兵模式、集群模式
前言Redis 哨兵模式主要是为Redis主从同步架构服务的,有时候主节点宕机,需要哨兵进行监控、通知,选举。哨兵是干什么用的?sentinel,中文名是哨兵。哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能:集群监控:负责监控 redis master 和 slave 进程是否正常工作。消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。故障转移:如果 master node 挂掉了,会自动转移到 slave node 上。配置中心:如果原创 2021-06-02 21:02:26 · 8425 阅读 · 0 评论 -
聊一聊对用Redis实现分布式锁的理解(基于setnx和基于Redisson的尝试)
减库存业务为防止超卖,怎么做?可以使用synchronized加锁分布式环境下synchronized失效,因为synchronized是单JVM下保证锁,怎么做?使用Redis的setnx命令,如果能修改key返回true,说明获取到key,加锁成功,最后将key删掉,便于下个减库存。业务出现异常,没有释放锁(删掉key)怎么办?使用try catch finally ,在finally中删掉key中途宕机的话锁就不会被释放,中途宕机怎么办?解决方案可以是加锁时,给key设置过期时间。如原创 2021-02-22 12:31:18 · 1916 阅读 · 1 评论 -
Redis | 整合Spring Boot用Zset有序集合实现一个简单的排行榜
前言我们可以使用有序集合Zset数据结构来实现排行榜设计,能自动排序。在有序集合中键值对的键被称为成员,值被称为分值,分值必须为浮点数,整体是集合名—成员—分值的结构,排序的根据是按照分值的大小来进行排序的。命令行为ZADD将一个带有给定分值的成员添加到有序集合中,返回添加元素的个数ZRANGE根据元素在有序排列中的位置,从有序集合里面获取多个元素ZRANGEBYSCORE根据一个分值段来获取在该分值段的所有元素ZREMZREM key member--原创 2021-02-16 17:17:15 · 1782 阅读 · 0 评论 -
Spring Boot | 接入Google kaptcha+Redis实现图片验证码登录
前言本文将基于Kaptcha实现图片验证码登录,Kaptcha是Google官方做的一个验证码库。用验证码登录的思路及步骤如下:前台登录界面生成时发送请求从后台获取验证码图片后台生成验证码图片后,再生成uuid,把验证码对应的正确字符str和这个uuid进行KV映射存储到Redis中,返回给前台,顺便把验证码的uuid放到请求的Cookie中。用户登录:用户输入账号密码、验证码,随后带着Cookie中的uuid一起发送给后台。后台把redis中的字符值和前台传入的进行比较,如果可行,那么就继续原创 2021-02-16 17:15:52 · 1335 阅读 · 4 评论 -
MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Com
前言看报错大概意思是:你配置用RDB方式保存快照,但是现在不能在磁盘上持久化万事看日志保存快照到本地,权限被拒绝我们可以设置dump文件位置,换到别的盘,或者在C盘对应文件开权限。这里我们选择设置dump文件位置重启Redis生效...原创 2021-02-13 22:10:31 · 224 阅读 · 0 评论 -
Redis Zset实现延时队列
前言本篇博文意在使用Redis模拟实现延时队列.Redis中的有序集合Zset可以实现延时队列,Zset可以看作是缩小版的redis,可以看作是用来存储键值对的集合,是集合名-K-V的结构,在Zset中,会按照Score进行排序。有序集合中键值对的键被称为成员,值被称为分值,分值必须为浮点数。命令行为ZADD将一个带有给定分值的成员添加到有序集合中,返回添加元素的个数ZRANGE根据元素在有序排列中的位置,从有序集合里面获取多个元素ZRANGEBYSCORE根据原创 2021-02-10 10:23:58 · 6465 阅读 · 1 评论 -
Redis过期回调 | 整合Spring-redis实现延迟队列
前言使用Redis回调功能,需要在Redis.conf配置文件中将notify-keyspace-events Ex开启将前面的注释’#'去掉即可结合Spring-Redis实现引入spring boot整合redis依赖 <!-- redis依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot原创 2021-02-10 10:23:18 · 899 阅读 · 0 评论 -
SpringBoot 整合redis
前言一、导入依赖 <!-- redis依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</arti...原创 2020-01-18 22:36:31 · 187 阅读 · 0 评论 -
经典数据结构:对布隆过滤器、布谷鸟过滤器的理解
布隆过滤器(Bloom Filter)是一种时间和空间上都比较高效的数据结构,它是1970年由布隆提出的。原创 2021-01-11 16:07:06 · 787 阅读 · 1 评论 -
Redis 缓存穿透、缓存击穿、缓存雪崩
缓存雪崩缓存雪崩是指,在某一时刻,大量热点Key过期,导致请求大量查询数据库,数据库压力大。解决方案可以给不同的key加上不同的随机数时间,就能有效避免大面积key失效问题。缓存穿透缓存穿透是指请求去查询数据库和redis里没有的数据,例如黑客可以不断查询id为-1的用户,那么就会导致服务器压力大。解决方案对请求参数进行校验,例如id为-1的直接拒绝请求。从缓存取不到的数据,在数据库中也没有取到,这时也可以将对应Key的Value对写为null、位置错误。使用布隆过滤器原创 2021-01-11 11:04:12 · 198 阅读 · 0 评论 -
Redis 搭建主从同步集群
前言1. 在三台服务器上分别创建redis配置文件2. 打开三台服务器的防火墙3.启动redis 服务4.检验是否完成主从同步5.检验读写分离总结本篇博文,将示例搭建redis 一主两从集群。默认你在三台服务器上都已经安装了redis。(我是在一台上搭建,然后复制了两台。)本次搭建主从同步集群使用了三台Centos系统服务器。角色IP地址端口master192.1...原创 2020-03-24 18:54:05 · 926 阅读 · 0 评论 -
Redis常用命令整理
启动redis./redis-server /redis/redis-5.0.8/redis.conf客户端连接redis服务器./redis-cli 重写AOF文件BGREWRITEAOF原创 2020-03-24 14:58:56 · 253 阅读 · 0 评论 -
Redis学习(二) 一发入魂,了解Redis中的持久化选项AOF和RDB
前言1. 使用RDB快照的方法2. 使用AOF持久化的方法3. 重写AOF文件哪里也不能去,就冲学习呗!考研最重要,技术也不能丢啊…与mysql不同,Redis 是在内存中跑的,这是它快的一个原因,随之带来的就是数据容易丢失,所以我们要做持久化。Redis中提供了两种持久化选项,分别是AOF和RDB。区别在于,AOF方式会将被执行的写命令保存起来做持久化,而RDB方式则会将某一时刻的所有...原创 2020-03-24 14:52:58 · 248 阅读 · 0 评论 -
Redis学习(一) 数据类型及相关操作命令
前言Redis中提供了五种结构:字符串(string)、列表(list)、集合(set)、散列(hash)、有序集合(zset).一、字符串字符串可以存储三种类型的值:字节串、整数、浮点数命令行为GET根据键获取值SET设置某个键对应某个值DEL删除某个键下的值示例:127.0.0.1:6379> set hello worldOK......原创 2020-01-26 10:54:42 · 436 阅读 · 1 评论