作者文章

fwq

FWQ
服务器教程
Redis中Redisson布隆过滤器的学习
Redis中Redisson布隆过滤器的学习 收藏 对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《Redis中Redisson布隆过滤器的学习》,主要介绍了布隆过滤器、RedisRedisson,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了! 简介 本文基于Spring Boot 2.6.6、redisson 3.16.0简单分析Redisson布隆过滤器的使用。 布隆过滤器是一个非常长的二进制向量和一系列随机哈希函数的组合,可用于检索一个元素是否存在; 使用场景如下: 解决Redis缓存穿透问题; 邮件过滤; 使用 建立一个二进制向量,所有位设置0; 选择K个散列函数,用于对元素进行K次散列,计算向量的位下标; 添加元素:将K个散列函数作用于该元素,生成K个值作为位下标,将向量的对应位设置为1; 检索元素:将K个散列函数作用于该元素,生成K个值作为位下标,若向量的对应位都是1,则说明该元素可能存在;否则,该元素肯定不存在; Demo 依赖 org.springframework.boot spring-boot-starter-data-redis io.lettuce lettuce-core redis.clients jedis org.redisson redisson 3.16.0…
2025-05-10 阅读全文 →
FWQ
服务器教程
RedisDesktopManager怎么远程连接redis
RedisDesktopManager怎么远程连接redis 收藏 珍惜时间,勤奋学习!今天给大家带来《RedisDesktopManager怎么远程连接redis》,正文内容主要涉及到等等,如果你正在学习数据库,或者是对数据库有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家! 1.下载RedisDesktopManager 直接去官网或者csdn上搜就行 2.安装RedisDesktopManager 傻瓜式安装,一直点next就行 安装完成后就是这样 3.建立远程连接 开始连接之前需要以下准备工作 修改redis.conf文件  命令vim redis.conf 如果你的redis.conf在其他文件里面,需要加上文件路径 比如我的在etc目录下,就在redis前面加上/etc vim /etc/redis.conf 1.设置虚拟机的主机ip/或者设置为0.0.0.0开放所有 我这里是直接注释掉了,然后使用ps -ef | grep redis命令查看  显示这个*就可以了 2.把protected-mode设置为no,关闭保护模式,才能远程连接 在redis.conf里面找到protected-mode并设置为no 如果在redis.conf直接找的话太慢了,在这里直接可以/protected实现快速查找 3.然后我们要把redis设置为后台启动,即将deamonize设置为yes  4.记得要关闭防火墙 …
2025-05-10 阅读全文 →
FWQ
服务器教程
Redis实现分布式数据存储的数据安全保障策略
Redis实现分布式数据存储的数据安全保障策略 一分耕耘,一分收获!既然打开了这篇文章《Redis实现分布式数据存储的数据安全保障策略》,就坚持看下去吧!文中内容包含等等知识点…希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢! Redis是一种高效的内存键值存储数据库,广泛用于分布式应用中。Redis提供了分布式数据存储的功能,可以将数据分散储存到多台服务器上,提高数据访问的并发能力和可用性。但是,在分布式存储的环境下,数据安全面临着诸多挑战,比如数据的一致性、可靠性、可恢复性和安全性等。本文将主要探讨Redis实现分布式数据存储的数据安全保障策略。 数据一致性的保障 在分布式存储环境下,数据一致性是一个关键问题。不同的服务器可能同时访问同一份数据,并且在数据写入、更新或删除时容易出现并发问题。为了保证数据的一致性,Redis提供了以下两种机制:Redis主从复制和Redis集群。 Redis主从复制可以将数据从一个主节点同步到多个从节点,保证数据的一致性和可靠性。在这个过程中,Redis主节点负责将自己的数据同步到从节点上,当主节点出现故障时,从节点中的一台会自动切换成主节点。这个过程中,在主从节点之间建立的连接是一种异步的复制方式,即从节点并不需要等待主节点确认,时间上会存在一定的延迟。 Redis集群是一种分布式存储的机制,它可以将数据分散存储到多个节点中。Redis集群采用分片机制对数据进行分块存储,每个节点只存储自己负责的分片数据,并与其他节点进行数据同步。当某个节点出现故障时,Redis集群可以自动将该节点上的数据迁移到其他节点上,从而保证数据的一致性和可靠性。 数据可靠性的保障 在分布式存储环境下,节点故障是不可避免的,这会导致数据丢失的问题。为了保证数据的可靠性,Redis提供了主从复制和AOF(Append Only File)两种机制。 主从复制机制可以将主节点上的数据同步到从节点上,这样当主节点出现故障时,从节点上还有一份备份数据。如果主节点恢复正常,其数据也可以重新同步到从节点上,从而实现数据的恢复。 AOF机制是一种持久化日志的方式,它将Redis中所有的写操作记录下来,并以日志方式保存到磁盘文件中。这样可以保证Redis中所有的写操作不会因为节点故障而丢失,同时可以实现Redis的数据恢复。 数据可恢复性的保障 在分布式存储环境下,节点故障会导致数据的丢失,因此需要实现数据的备份和恢复。为了保证数据的可恢复性,Redis提供了RDB(Redis Database Backup)和AOF两种备份机制。 RDB机制是一种快照备份方式,它可以将Redis中所有的数据以二进制的形式保存到磁盘文件中。这种方式可以实现Redis的灾难恢复以及数据的备份和迁移。 AOF机制可以将写操作记录到磁盘文件中,可以保证Redis中所有的写操作不会因为节点故障而丢失。当节点故障时,可以通过重新读取AOF文件来恢复Redis中的数据。 数据安全性的保障 在分布式存储环境下,数据安全面临着诸多挑战,比如数据泄露、数据篡改、数据丢失等。为了保证数据的安全性,Redis提供了以下两种机制:密码认证和数据加密。 密码认证是一种常见的安全机制,可以防止未授权的访问。Redis提供了密码认证的功能,用户可以通过设置密码来防止未授权的访问。同时还可以设置访问控制列表(ACL),来限制不同用户的访问权限。 数据加密是一种保护数据隐私的机制,可以采用对称加密、非对称加密等方式,来防止数据泄露。Redis在传输过程中,可以采用SSL/TLS等方式对数据进行加密,保障数据的安全性。 总结 本文主要探讨了Redis实现分布式数据存储的数据安全保障策略,包括数据一致性的保障、数据可靠性的保障、数据可恢复性的保障和数据安全性的保障。通过以上措施,可以保障分布式系统中的数据安全,提高系统的可靠性和可用性。 华为云盘古大模型3.0发布 AI云服务同时上线:200亿亿次性能 win7任务栏点击后没有反应怎么办
2025-05-10 阅读全文 →
FWQ
服务器教程
Redis中分布式锁Redlock的示例分析
Redis中分布式锁Redlock的示例分析 收藏 一分耕耘,一分收获!既然打开了这篇文章《Redis中分布式锁Redlock的示例分析》,就坚持看下去吧!文中内容包含等等知识点…希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢! Redlock实现库 Java Redisson Star 9458 C# RedLock.net Star 259 Go redsync.go Star 249 虽然后面的算法是一样的,不过这个点赞数确实服。 单点Redis锁 先简单回顾一下单点的Redis锁是怎么实现的。 获取锁 SET resource_name my_random_value NX PX 30000 客户端A在Redis上设置一个特定的键值对,同时给一个超时时间(避免死锁)。其他客户端在访问的时候先看看这个key是否已经存在,并且值等于my_random_value。如果已存在就等待,否则就获取成功,执行业务代码。resource_name和my_random_value是所有客户端都知道并且共享的。 释放锁 if redis.call("get",KEYS[1]) == ARGV[1] then return redis.call("del",KEYS[1])else return 0end 对比key获取到的对应的value是否相等,如果相等,就删除(释放),否则就返回失败。 单点Redis锁的缺陷 这个缺陷其实很明显,如果只有一个Redis实例,这个挂了,所有依赖他的服务都挂了。显然不太适合大型的应用。 简单的Redis主从架构碰到的问题…
2025-05-10 阅读全文 →
FWQ
服务器教程
如何使用Redis和Lua开发分布式数据结构功能
如何使用Redis和Lua开发分布式数据结构功能 数据库小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《如何使用Redis和Lua开发分布式数据结构功能》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发! 如何使用Redis和Lua开发分布式数据结构功能 在现代分布式系统中,数据结构的管理是一个重要的方面。Redis作为一款高性能的缓存数据库,通过支持多种数据结构,为我们提供了强大的功能。而Lua作为一种轻量级脚本语言,与Redis的高可扩展性和性能完美结合,使得我们可以通过编写Lua脚本来实现更复杂的分布式数据结构功能。 Redis提供的分布式数据结构有String、List、Hash、Set和Sorted Set等。而Lua通过Redis的EVAL命令,允许我们在Redis服务器端执行Lua脚本,从而实现复杂的业务逻辑。 本文将以实际代码示例的形式,介绍如何使用Redis和Lua开发分布式数据结构功能。 String数据结构 String数据结构是Redis最简单的数据结构,可以用来存储任意类型的value,例如字符串、数字、JSON等。下面是一个使用Lua脚本实现原子加减操作的示例: -- 脚本代码 local key = KEYS[1] -- 键名 local value = ARGV[1] -- 值 local current = redis.call('GET', key)…
2025-05-10 阅读全文 →
FWQ
服务器教程
redis启动流程介绍
redis启动流程介绍 收藏 本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《redis启动流程介绍》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~ 1. 准备运行环境 * 设置oom handler,zmalloc分配内存失败时调用 * 初始化随机种子,用于生成随机数 * 将server参数初始化为默认值  * 创建命令与处理函数的映射表 2. 解析命令行参数、loadServerConfig()解析配置文件 * 配置文件会覆盖命令行指定的参数 * 无效的配置项或者不合理的配置值会导致redis无法正常启动 3. initServer()初始化服务 * 安装信号处理函数  * 创建共享对象,redis预分配好常用的对象用于共享,以节省内存  * 根据maxc lients配置调整max open files…
2025-05-10 阅读全文 →
FWQ
服务器教程
深度图解 Redis Hash(散列表)实现原理
深度图解 Redis Hash(散列表)实现原理 收藏 欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《深度图解 Redis Hash(散列表)实现原理》,这篇文章主要讲到Redis、散列表等等知识,如果你对数据库相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习! 1、是什么 Redis Hash(散列表)是一种 field-value pairs(键值对)集合类型,类似于 Python 中的字典、Java 中的 HashMap。一个 field 对应一个 value,你可以通过 field 在 O(1) 时间复杂度查 field 找关联的 field,也可以通过 field 来更新或者删除这个键值对。…
2025-05-10 阅读全文 →
FWQ
服务器教程
Redis基础之分析基础数据结构及用法
Redis基础之分析基础数据结构及用法 收藏 本篇文章向大家介绍《Redis基础之分析基础数据结构及用法》,主要包括Redis、数据、结构,具有一定的参考价值,需要的朋友可以参考一下。   本文转载自微信公众号「 SH的全栈笔记」,作者 SH 。转载本文请联系SH的全栈笔记公众号。 如果你是一个有经验的后端或者服务器开发,那么一定听说过Redis,其全称叫Remote Dictionary  Server。是由C语言编写的基于Key-Value的存储系统。说直白点就是一个内存数据库,既然是内存数据库就会遇到如果服务器意外宕机造成的数据不一致的问题。 这跟很多游戏服务器也是一样的,感兴趣的可以参考我之前的文章游戏服务器和Web服务器的区别。其数据首先会流向内存,基于快速的内存读写来实现高性能,然后定期将内存的数据中的数据落地。Redis其实也是这么个流程,基于快速的内存读写操作,单机的Redis甚至能够扛住10万的QPS。 Redis除了高性能之外,还拥有丰富的数据结构,支持大多数的业务场景。这也是其为什么如此受欢迎的原因之一,下面我们就来看一看Redis有哪些基础数据类型,以及他们底层都是怎么实现的。 1. 数据类型 其基础数据类型有String、List、Hash、Set、Sorted  Set,这些都是常用的基础数据类型,可以看到非常丰富,几乎能够满足大部分的需求了。其实还有一些高级数据结构,我们在这章里暂时先不提,只聊基础的数据结构。 2. String String可以说是最基础的数据结构了,  用法上可以直接和Java中的String挂钩,你可以把String类型用于存储某个标志位,某个计数器,甚至狠一点,序列化之后的JSON字符串都行,其单个key限制为512M。其常见的命令为get、set、incr、decr  、mget。 2.1 使用 get 获取某个key,如果key不存在会返回空指针 set 给key赋值,将key设置为指定的值,如果该key之前已经有值了,那么将被新的值给覆盖…
2025-05-10 阅读全文 →
FWQ
服务器教程
一文详解Redis内存回收的过期策略
一文详解Redis内存回收的过期策略 收藏 各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题是《一文详解Redis内存回收的过期策略》,很明显是关于数据库的文章哈哈哈,其中内容主要会涉及到Redis、策略、过期等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享! 有一天,产品一哥“林哥”来找我,跟我说:“小李,咱们现在一个需求,商品定时下架的逻辑,这个咱们能做到吗?”,我一想,今年的绩效跟着产品大佬走,当即拍着胸脯说道:“林哥,你就放一百个心,包在我身上~”,然后开始头脑风暴,毕竟要向前(钱)看。 案例 商品定时下架 方案一:消息队列 首先我想到当运营童鞋创建(或修改下架时间)商品后,就把该商品放到消息队列中,这样利用 RabbitMQ 的消息 TTL 加死信队列的特性,这个需求搞定,安排上线~ 方案二:定时任务+消息队列 过了一段时间,架构师发哥心急火燎的来找我,我一看这阵势这是有大事吧,发哥不等我开口,说:“小李,快看看系统,运营童鞋来找我说,商品到下架时间还能买到;而且运维童鞋反应过节那天咱们的 RabbitMQ 那台服务器内存和硬盘不够用了,尽快处理下”。 我把两件事串联在一起就想到了出问题的点就是“过期自动下架”功能的问题。 第一个问题:商品到下架时间还能买到,我跟运营童鞋确认问题商品,发现很多商品的过期时间是3个月甚至更久,大致猜测可能是延迟时间过长导致了消息延迟失败,查了查默认在使用RabbitMQ的延迟消息功能时候,它的延迟极限是4294967296毫秒,也就是49.7天,很显然现有的功能是无法满足的运营需求,扑街~。 第二个问题:过节前夕 RabbitMQ 那台服务器内存和硬盘不够用,我去看运营后台发现创建了大量的新商品,那应该是大量延时下架商品放到消息队列中,以至于产生堆积。 基于以上两点,我做出以下两点改造: 创建(或修改下架时间)商品的时候,不会放到消息队列中,节约资源利用空间; 定时任务每天从商品表中捞取第二天下架的商品放入到消息队列中,缩短延迟时间。 搞定~ 从这个案例中我借鉴的是 Redis 的内存回收策略,因为 Redis…
2025-05-10 阅读全文 →
FWQ
服务器教程
Redis与Golang的数据结构操作:如何高效存储和索引数据
Redis与Golang的数据结构操作:如何高效存储和索引数据 目前golang学习网上已经有很多关于数据库的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《Redis与Golang的数据结构操作:如何高效存储和索引数据》,也希望能帮助到大家,如果阅读完后真的对你学习数据库有帮助,欢迎动动手指,评论留言并分享~ Redis与Golang的数据结构操作:如何高效存储和索引数据 引言:随着互联网的快速发展,数据的存储和索引成了每个开发者需要面对的重要问题。在这里,我们将介绍如何通过Redis和Golang来实现高效的数据存储和索引。 引言RedisRedis是一个开源的内存数据结构存储系统,它可以用来作为数据库、缓存和消息中间件。它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合。通过使用这些数据结构,我们能够高效地存储和索引大型数据集。 Golang与Redis的连接要在Golang中连接Redis,首先需要安装Go Redis客户端。可以使用以下命令进行安装: go get github.com/go-redis/redis/v8 接下来,在代码中引入Redis客户端: import "github.com/go-redis/redis/v8" 使用Redis存储数据下面我们将介绍如何使用Redis来存储数据。首先,需要创建一个Redis客户端实例,并通过配置参数设置连接信息: rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", // Redis服务器地址 Password: "", // Redis密码 DB: 0, //…
2025-05-10 阅读全文 →