分类归档

服务器教程

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

FWQ
服务器教程
一文详解Redis内存回收的过期策略
一文详解Redis内存回收的过期策略 0浏览 收藏 各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题是《一文详解Redis内存回收的过期策略》,很明显是关于数据库的文章哈哈哈,其中内容主要会涉及到Redis、策略、过期等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享! 有一天,产品一哥“林哥”来找我,跟我说:“小李,咱们现在一个需求,商品定时下架的逻辑,这个咱们能做到吗?”,我一想,今年的绩效跟着产品大佬走,当即拍着胸脯说道:“林哥,你就放一百个心,包在我身上~”,然后开始头脑风暴,毕竟要向前(钱)看。 案例 商品定时下架 方案一:消息队列 首先我想到当运营童鞋创建(或修改下架时间)商品后,就把该商品放到消息队列中,这样利用 RabbitMQ 的消息 TTL 加死信队列的特性,这个需求搞定,安排上线~ 方案二:定时任务+消息队列 过了一段时间,架构师发哥心急火燎的来找我,我一看这阵势这是有大事吧,发哥不等我开口,说:“小李,快看看系统,运营童鞋来找我说,商品到下架时间还能买到;而且运维童鞋反应过节那天咱们的 RabbitMQ 那台服务器内存和硬盘不够用了,尽快处理下”。 我把两件事串联在一起就想到了出问题的点就是“过期自动下架”功能的问题。 第一个问题:商品到下架时间还能买到,我跟运营童鞋确认问题商品,发现很多商品的过期时间是3个月甚至更久,大致猜测可能是延迟时间过长导致了消息延迟失败,查了查默认在使用RabbitMQ的延迟消息功能时候,它的延迟极限是4294967296毫秒,也就是49.7天,很显然现有的功能是无法满足的运营需求,扑街~。 第二个问题:过节前夕 RabbitMQ 那台服务器内存和硬盘不够用,我去看运营后台发现创建了大量的新商品,那应该是大量延时下架商品放到消息队列中,以至于产生堆积。 基于以上两点,我做出以下两点改造: 创建(或修改下架时间)商品的时候,不会放到消息队列中,节约资源利用空间; 定时任务每天从商品表中捞取第二天下架的商品放入到消息队列中,缩短延迟时间。 搞定~ 从这个案例中我借鉴的是 Redis 的内存回收策略,因为…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redisson主从一致性问题详解
Redisson主从一致性问题详解 0浏览 收藏 对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《Redisson主从一致性问题详解》,主要介绍了一致性、Redisson主从,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了! Redisson 主从一致性 我们先来说一下 Redis 的主从模式,Redis Master(主节点)中处理所有发向 Redis 的写操作(增删改),Redis Slave (从节点)只负责处理读操作,主节点会不断将自己的数据同步给从节点,确保主从之间的数据一致性,但是数据同步会存在一定的延时,主从一致性问题就是因为延时而导致的 比如我们通过 set lock thread1 nx ex 10 来获取锁,主节点就会保存这个锁的标识 thread1,然后主节点会向从节点进行同步,但在同步尚未完成时时主节点发生故障,Redis 哨兵发现主节点宕机后,客户端连接会断开,然后从从节点中选出一个作为新的主节点,但是由于之前主从同步未完成,即 thread1 这个锁已经丢失,所以此时 Java 应用再来访问新的主节点时就会发现锁失效了,此时其他线程来获取锁时也能获取成功,这时就可能出现并发安全问题,以上就是主从一致性导致的锁失效问题…
2024-12-01 阅读全文 →
FWQ
服务器教程
使用Redis构建高效的Ruby应用程序
使用Redis构建高效的Ruby应用程序 收藏 小伙伴们有没有觉得学习数据库很有意思?有意思就对了!今天就给大家带来《使用Redis构建高效的Ruby应用程序》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你! 使用Redis构建高效的Ruby应用程序 Redis是一个快速、开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种数据结构(如字符串、列表、哈希、集合等),并提供了丰富的功能,包括数据持久化、复制和主从模式等。在Ruby应用程序中使用Redis可以提高性能和扩展性。 本文将介绍如何使用Redis构建高效的Ruby应用程序,并提供一些代码示例。 安装Redis 首先,需要在本地安装Redis服务器。可以从Redis官方网站(https://redis.io/download)下载最新的稳定版本,并按照官方文档进行安装。 安装Redis gem 在Ruby应用程序中使用Redis,需要安装相应的Redis gem。可以通过运行以下命令来安装: gem install redis 连接到Redis服务器 连接到Redis服务器,需要使用Redis gem提供的Redis类。以下是一个连接到本地Redis服务器的示例: require 'redis' redis = Redis.new(host: 'localhost', port: 6379) 存储和获取数据 Redis支持多种数据结构,可以根据应用程序的需求选择合适的数据结构。以下是一些常用的数据操作示例:…
2024-12-01 阅读全文 →
FWQ
服务器教程
如何有效管理Redis?
如何有效管理Redis? 0浏览 收藏 在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是数据库学习者,那么本文《如何有效管理Redis?》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发! 一、安全 谈到安全,我们会联想到些什么? 比如,可信任的环境会给我们带来安全感,陌生的环境则会让你感到未知的恐惧和孤独。 再比如,国产化替代信创项目(安可替代),这里我简称为国创项目,就是要达到信任、安全可靠以及自主可控的的目的。 上面谈了这么多(瞎扯了很多,我黔驴尽穷了),只是为了提升我们的安全意识。 Redis以简洁为美,创始人曾这么描述过。但同样在安全层面也没做过多的工作。 这里补充一点,上次没有讲到如何优雅的关闭Redis服务。虽然可以杀掉进程来控制,但推荐使用如下方式关闭: $ /opt/redis-6.0.8/src/redis-cli shutdown 1、可信环境 Redis的安全设计是基于“Redis运行在可信任的环境”这个前提下做出来的。在生产环境(正式发布环境)运行时,不允许外部直接连接到Redis服务器上,此时应该通过应用程序进行中转,运行在可信任的环境中是保证Redis安全至关重要的方法。 1.1、bind参数 在Redis的默认配置文件redis.conf中,只会接受本地的网络请求。但通过在配置文件中修改bind参数更改这一设置,默认的bind设置为: bind:127.0.0.1 bind参数同样可以绑定多个IP地址,IP地址以间隔空格分隔,如下示例: # Examples:# bind 192.168.1.100 10.0.0.1# bind 127.0.0.1 ::1 1.2、protected-mode参数 在Redis3.2的版本中,引入了一个特殊模式:保护模式,来更好地确保Redis运行在可信环境之中。值得注意的是,保护模式在默认情况下是开启的。 参数设置: #开启保护模式protected-mode yes#禁止保护模式protected-mode no 作用: 开启保护模式:接收到来自不在bind绑定的网络客户端发送命令时,如果客户端没有设置密码,Redis会返回错误拒绝(DENIED)执行该命令。 禁止保护模式:可以在配置中使用protected-mode no禁止。 安全:对于生产环境需要确保开启了护盾(防火墙),达到确保可信客户端连接服务器的目的。…
2024-12-01 阅读全文 →
FWQ
服务器教程
redis中Hash字典操作的方法
redis中Hash字典操作的方法 0浏览 收藏 对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《redis中Hash字典操作的方法》,主要介绍了字典、redisHash,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了! 1.Redis操作之Hash操作 redis支持五大数据类型,只支持第一层,也就说字典的value值,必须是字符串 如果value值想存字典,必须用json转换一下,转成字符串 redis hash字典操作 reids:{ k1:'dafdadfasf', m1:{ 'key2':value2, 'key1':value1, } } 1.hset(name, key, value),插入值 # name对应的hash中设置一个键值对(不存在,则创建;否则,修改) # 参数: # name,redis的name # key,name对应的hash中的key #…
2024-12-01 阅读全文 →
FWQ
服务器教程
如何利用Redis和Go语言实现缓存功能
如何利用Redis和Go语言实现缓存功能 收藏 在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是数据库学习者,那么本文《如何利用Redis和Go语言实现缓存功能》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发! 如何利用Redis和Go语言实现缓存功能 缓存是一种常见的性能优化技术,它通过将数据存储在高速读取的介质中,例如内存中,来提高数据访问速度。Redis是一种高性能的键值存储数据库,Go语言是一种轻量级并发编程语言,两者的结合可以实现高效的缓存功能。本文将介绍如何利用Redis和Go语言实现缓存功能,并提供具体的代码示例。 第一步:安装和配置Redis数据库 在开始之前,我们需要安装和配置Redis数据库。可以从官方网站下载Redis,并按照官方文档进行安装和配置。配置完成后,启动Redis服务。 第二步:安装Go语言的Redis客户端库 Go语言有多个Redis客户端库可供选择,例如go-redis和redigo等。在本文中,我们选择使用go-redis库。可以使用以下命令安装该库: go get github.com/go-redis/redis 第三步:编写Go代码实现缓存功能 下面是一个简单的Go代码示例,说明如何利用Redis和Go语言实现缓存功能: package main import ( "fmt" "time" "github.com/go-redis/redis" ) func main() { // 连接Redis数据库 client…
2024-12-01 阅读全文 →
FWQ
服务器教程
k8s部署redis cluster集群的实现
k8s部署redis cluster集群的实现 0浏览 收藏 亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《k8s部署redis cluster集群的实现》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下Redis、K8s部署、cluster,希望所有认真读完的童鞋们,都有实质性的提高。 Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理。它可以存储和操作高级数据类型,例如列表,地图,集合和排序集合。 由于Redis接受多种格式的密钥,因此可以在服务器上执行操作,从而减少了客户端的工作量。 它仅将磁盘用于持久性,而将数据完全保存在内存中。 Redis是一种流行的数据存储解决方案,并被GitHub,Pinterest,Snapchat,Twitter,StackOverflow,Flickr等技术巨头所使用。 为什么要用Redis 它的速度非常快。它是用ANSI C编写的,并且可以在POSIX系统上运行,例如Linux,Mac OS X和Solaris。 Redis通常被排名为最流行的键/值数据库和最流行的与容器一起使用的NoSQL数据库。 其缓存解决方案减少了对云数据库后端的调用次数。 应用程序可以通过其客户端API库对其进行访问。 所有流行的编程语言都支持Redis。 它是开源且稳定的。 什么是Redis Cluster集群 Redis Cluster是一组Redis实例,旨在通过对数据库进行分区来扩展数据库,从而使其更具弹性。…
2024-12-01 阅读全文 →
FWQ
服务器教程
SpringSession通过Redis统计在线用户数量的实现代码
SpringSession通过Redis统计在线用户数量的实现代码 0浏览 收藏 数据库小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《SpringSession通过Redis统计在线用户数量的实现代码》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发! 最近遇到一个比较紧急的任务,要求统计在线用户,目的是配合性能测评,要求证明自己系统的在线用户能够达标,不过系统因为历史原因,并没有这个功能,所以只能去springSession官网和网上搜资料,想到通过统计redis里缓存的数据 因为系统原先的逻辑是使用Spring Session加上Redis做的会话共享实现的单点登录,登录之后会在session设置一个key值表示用户已经登录过,同时重写HttpServletRequestWrapper 设置remoteUser数据值 class RemoteUserRequestWrapper extends HttpServletRequestWrapper { String userCode; RemoteUserRequestWrapper(HttpServletRequest request) { super(request); this.userCode = (String) request.getSession() .getAttribute(org.apache.commons.lang3.StringUtils.isBlank(sessionKeyName)?DEFAULT_SESSION_KEY_NAME:sessionKeyName); } @Override public String…
2024-12-01 阅读全文 →
FWQ
服务器教程
phpredis提高消息队列的实时性方法(推荐)
phpredis提高消息队列的实时性方法(推荐) 0浏览 收藏 怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《phpredis提高消息队列的实时性方法(推荐)》,涉及到redis消息队列,有需要的可以收藏一下 数据库存贮都用list形式 要存2个队列 1个用作消息队列保存到数据 还有个 就是用来实时读取数据在redis $redis->lpush($queenkey, json_encode($array)); $redis->lpush($listkey, json_encode($array)); /*消息队列实例*/ public function insertinfo() { $infos = array('info1' => mt_rand(10,100), 'info2' => mt_rand(10,100)); $this->insertinfos($infos, 'tutorial-list','tutoriallist');…
2024-12-01 阅读全文 →
FWQ
服务器教程
如何在CentOS 7上安装Redis服务器
如何在CentOS 7上安装Redis服务器 0浏览 收藏 本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《如何在CentOS 7上安装Redis服务器》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~    大家好,本文的主题是 Redis,我们将要在 CentOS 7 上安装它。编译源代码,安装二进制文件,创建、安装文件。在安装了它的组件之后,我们还会配置 redis ,就像配置操作系统参数一样,目标就是让 redis 运行的更加可靠和快速。   Redis 服务器   Redis 是一个开源的多平台数据存储软件,使用 ANSI C 编写,直接在内存使用数据集,这使得它得以实现非常高的效率。Redis 支持多种编程语言,包括 Lua, C, Java, Python, Perl,…
2024-12-01 阅读全文 →