分类归档

服务器教程

服务器知识、操作系统教程、服务器常用软件等

FWQ
服务器教程
Redis Labs 更名为 Redis:纯粹而简单
Redis Labs 更名为 Redis:纯粹而简单 0浏览 收藏 怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《Redis Labs 更名为 Redis:纯粹而简单》,涉及到开源、Redis Labs、数据平台,有需要的可以收藏一下 Redis Labs 方面宣布,该公司现已正式更名为 Redis,从名称中删除了“Labs”一词。 官方表示,这一变化标志着公司和 Redis 开源项目的成熟;也反映了公司继续将 Redis 作为实时数据平台发展的使命。“更名反映了公司在引领开源 Redis 从流行的缓存系统演变为领先的实时数据平台方面所保持的核心作用”。公司更名不会影响开源项目 Redis 的 BSD 许可;同时,也不会影响去年引入的治理模型。 Redis 项目由…
2024-12-01 阅读全文 →
FWQ
服务器教程
基于Redis+Lua脚本实现分布式限流组件封装的方法
基于Redis+Lua脚本实现分布式限流组件封装的方法 0浏览 收藏 在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《基于Redis+Lua脚本实现分布式限流组件封装的方法》,聊聊Redislua脚本、分布式限流组件,希望可以帮助到正在努力赚钱的你。 创建限流组件项目 pom.xml文件中引入相关依赖 org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-starter-aop com.google.guava guava 18.0 在resources目录下创建lua脚本  ratelimiter.lua -- -- Created by IntelliJ IDEA. -- User: 寒夜 -- -- 获取方法签名特征 local methodKey…
2024-12-01 阅读全文 →
FWQ
服务器教程
美团二面:细数 Redis 阻塞的九种情况
美团二面:细数 Redis 阻塞的九种情况 0浏览 收藏 一分耕耘,一分收获!既然打开了这篇文章《美团二面:细数 Redis 阻塞的九种情况》,就坚持看下去吧!文中内容包含Redis、阻塞、客户端等等知识点…希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢! 哈喽大家好,我是阿Q! 前两天去美团面试的陈同学回来了,看他满脸泄气的样子,准是没拿到 Offer。 听了他面试的经过,真替他感到惋惜。究其原因,是被一道面试题拦住了去路:看你简历上写着精通 Redis,请你总结一下 Redis 中存在的阻塞问题吧。 正好阿Q这几天正在研究 Redis,就顺便在这儿给大家做个总结。 命令阻塞 使用不当的命令造成客户端阻塞: keys * :获取所有的 key 操作; Hgetall:返回哈希表中所有的字段和; smembers:返回集合中的所有成员; 这些命令时间复杂度是O(n),有时候也会全表扫描,随着n的增大耗时也会越大从而导致客户端阻塞。 SAVE…
2024-12-01 阅读全文 →
FWQ
服务器教程
面试杀手锏:Redis源码之BitMap
面试杀手锏:Redis源码之BitMap 0浏览 收藏 来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《面试杀手锏:Redis源码之BitMap》,介绍一下Redis、BitMap、面试题,希望对大家的知识积累有所帮助,助力实战开发! 在上文《​​》中我们深入分析了 SDS 的实现,本次介绍的位图(BitMap)就是借助 SDS 实现的。 本文在最后讲解了BitMap对腾讯面试题的解决方案,并基于BitMap实现了仿GitHub提交次数的日历图,希望各位看官看的开心。 1.位图简介 如果我们需要记录某一用户在一年中每天是否有登录我们的系统这一需求该如何完成呢?如果使用KV存储,每个用户需要记录365个,当用户量上亿时,这所需要的存储空间是惊人的。 Redis 为我们提供了位图这一数据结构,每个用户每天的登录记录只占据一位,365天就是365位,仅仅需要46字节就可存储,极大地节约了存储空间。 位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已(二进制位数组)。 2.命令实战 Redis提供了SETBIT、GETBIT、BITCOUNT、BITOP四个常用命令用于处理二进制位数组。 SETBIT:为位数组指定偏移量上的二进制位设置值,偏移量从0开始计数,二进制位的值只能为0或1。返回原位置值。 GETBIT:获取指定偏移量上二进制位的值。 BITCOUNT:统计位数组中值为1的二进制位数量。 BITOP:对多个位数组进行按位与、或、异或运算。 127.0.0.1:6379> SETBIT first 0 1 # 0000…
2024-12-01 阅读全文 →
FWQ
服务器教程
浅谈Redis的异步机制
浅谈Redis的异步机制 0浏览 收藏 IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《浅谈Redis的异步机制》,聊聊Redis异步,我们一起来看看吧! Redis 内部的阻塞式操作: CPU 核和 NUMA 架构的影响; Redis 关键系统配置; Redis 内存碎片; Redis 缓冲区。 一、Redis 的阻塞点 和 Redis 实例交互的对象,以及交互时会发生的操作: 客户端:网络 IO,键值对增删改查操作,数据库操作; 磁盘:生成 RDB 快照,记录 AOF 日志,AOF…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis笔记点赞排行榜的实现示例
Redis笔记点赞排行榜的实现示例 0浏览 收藏 从现在开始,我们要努力学习啦!今天我给大家带来《Redis笔记点赞排行榜的实现示例》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到点赞、Redis笔记等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习! 一、发布探店笔记 探店笔记类似点评网站的评价,往往是图文结合。对应的表有两个 探店笔记表(主键、商户id、用户id、标题、文字、图片、探店文字描述、点赞数量、评论数量) 评价表(笔记的评价)  先上传图片请求一次保存图片接口,再点发布请求发布接口。这两个接口已经写好 二、实现查看笔记接口 BlogController @RestController @RequestMapping("/blog") public class BlogController { @Resource private IBlogService blogService; @GetMapping("/hot") public Result queryHotBlog(@RequestParam(value = "current", defaultValue…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis实现分布式任务调度的方法与应用实例
Redis实现分布式任务调度的方法与应用实例 收藏 怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《Redis实现分布式任务调度的方法与应用实例》,涉及到,有需要的可以收藏一下 Redis实现分布式任务调度的方法与应用实例 随着技术的发展,分布式系统在互联网应用和大数据领域得到了广泛的应用。在分布式系统中,任务调度是一个重要的组成部分。分布式任务调度用于协调各节点之间的任务执行,使得任务能够在不同的节点上通过协同完成。采用Redis实现分布式任务调度是一种非常流行的方法。本文将介绍Redis实现分布式任务调度的方法以及应用实例。 一、Redis是什么? Redis是一个开源的内存数据库,可以用作数据结构服务器。Redis支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。除了支持存储数据外,Redis还提供了一系列丰富的功能,如事务、发布/订阅、Lua脚本等。Redis的主要特点是速度快、可靠稳定、功能丰富,被广泛用于各种应用中。 二、Redis实现分布式任务调度的方法 在分布式系统中,任务调度需要解决以下问题: 1.任务协调:将任务分配到合适的节点上执行,协调各个节点之间的执行顺序和结果。 2.任务监控:监控任务的执行情况,发现和处理异常情况。 3.任务重试:处理任务失败后的重试和恢复。 Redis可以通过以下方法实现分布式任务调度: 1.Redis数据结构支持 Redis支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。这些数据结构可以用于存储任务和节点的元数据信息,如任务的状态、执行时间等。在分布式任务调度中,常用的数据结构包括列表、集合和有序集合。 2.Redis发布/订阅功能 Redis提供了发布/订阅机制,可以用于任务协调和监控。在这种机制下,发布者将消息发送给指定的频道,订阅者可以从频道中接收消息。在分布式任务调度中,可以将任务分配的消息发布到指定的频道,在节点上订阅该频道,接收到任务后执行相应的操作。 3.Redis Lua脚本 Redis支持Lua脚本,可以用于实现复杂的任务协调和监控逻辑。在Lua脚本中可以通过Redis客户端接口访问Redis数据结构和发布/订阅功能。在分布式任务调度中,可以通过Lua脚本实现任务的分配、监控和重试。 三、Redis实现分布式任务调度的应用实例 以下是一个简单的应用实例,展示了如何使用Redis实现基于发布/订阅机制的分布式任务调度。该实例包括3个组件:任务发布器、任务执行器和任务监控器。任务发布器将任务发布到指定的频道,任务执行器从频道中接收任务并执行相应的操作,任务监控器监控任务的执行情况。 任务发布器代码: import redis r = redis.Redis(host='localhost',…
2024-12-01 阅读全文 →
FWQ
服务器教程
浅谈Redis中的全局命令
浅谈Redis中的全局命令 0浏览 收藏 知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个数据库开发实战,手把手教大家学习《浅谈Redis中的全局命令》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!  在
2024-12-01 阅读全文 →
FWQ
服务器教程
浅谈Redis的keys命令到底有多慢
浅谈Redis的keys命令到底有多慢 0浏览 收藏 怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《浅谈Redis的keys命令到底有多慢》,涉及到Rediskeys命令,有需要的可以收藏一下 keys命令的用法: keys pattern 查找符合正则匹配的key的列表。扫描对象是Redis服务中所有的key,想想都很慢对不对? 同时执行keys命令的同时,Redis进程将被阻塞,无法执行其他命令,假如超过了哨兵的down-after-milliseconds配置,还会进行主从切换,切换过程中,如果主节点恢复正常,还可能出现脑裂等一系列问题。 所以,生产环境中,建议直接禁用keys命令。 Keys命令的替代方案 1、scan扫描,避免阻塞 2、将需要统计的数据放入一个set中 (但是这样可能出现Big Key问题,一般数据量大就不推荐) Keys命令在Redis Cluster中是怎样执行的? 一般来说,keys命令对于集群节点来说,是不知道路由到哪个节点的,不像 get命令。在Java的Jedis客户端的JedisClusterKeyCommands类中,我们看到: public Set keys(byte[] pattern) { // 在每个节点执行keys命令 Collection >…
2024-12-01 阅读全文 →
FWQ
服务器教程
怎么用Redis实现分布式锁
怎么用Redis实现分布式锁 0浏览 收藏 偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《怎么用Redis实现分布式锁》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步! 单机上的锁和分布式锁的联系与区别 我们先来看下单机上的锁。 对于在单机上运行的多线程程序来说,锁本身可以用一个变量表示。 变量值为 0 时,表示没有线程获取锁; 变量值为 1 时,表示已经有线程获取到锁了。 我们通常说的线程调用加锁和释放锁的操作,实际上,一个线程调用加锁操作,其实就是检查锁变量值是否为 0。如果是 0,就把锁的变量值设置为 1,表示获取到锁,如果不是 0,就返回错误信息,表示加锁失败,已经有别的线程获取到锁了。而一个线程调用释放锁操作,其实就是将锁变量的值置为 0,以便其它线程可以来获取锁。 我用一段代码来展示下加锁和释放锁的操作,其中,lock 为锁变量。 acquire_lock(){   if lock == 0      lock = 1      return 1   else      return 0 } …
2024-12-01 阅读全文 →