分类归档

服务器教程

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

FWQ
服务器教程
Redis特殊数据类型HyperLogLog基数统计算法讲解
Redis特殊数据类型HyperLogLog基数统计算法讲解 0浏览 收藏 本篇文章给大家分享《Redis特殊数据类型HyperLogLog基数统计算法讲解》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。 Redis HyperLogLog基数统计 HyperLogLog 是用来做基数统计的算法。 先了解下什么是基数。 比如数据集{1, 3, 5, 7, 5, 7, 8},那么这个数据集的基数集为{1, 3, 5 ,7, 8},基数(不重复元素)为5。 如果,现在需要统计一下网页的UV,那么就会涉及到去重了,这种场景就很适合用HyperLogLog。 这不就是set集合嘛?我用set来得出不重复的元素也可以呀。 没错,是可以,但是当数据量非常大的时候,你这个set是不是会占用非常大的内存呢?如果用HyperLogLog来处理就好了,因为它计算基数所需要的空间是一定的,只要12kb,就可以计算接近 2^64 个不同元素的基数。 但是注意在这个数量级下,是会存在0.81%的错误率的,所以说具体还得看业务是否可以接受这样的错误率。像上面说的统计UV的场景,这点错误率是可以忽略的。 一、pfadd…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis在无人驾驶技术中的应用实战
Redis在无人驾驶技术中的应用实战 收藏 偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Redis在无人驾驶技术中的应用实战》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步! 随着人工智能和互联网技术的迅猛发展,无人驾驶技术已经成为汽车行业和科技行业的热门话题。无人驾驶技术的实现需要在汽车上集成各种传感器和计算机设备,同时需要定位数据、实时传输数据、地图信息、道路交通规则等各种各样的数据,这些数据的处理和管理都离不开数据存储技术的支持。在这里,我们将重点介绍Redis在无人驾驶技术中的应用实战。 一、Redis 是什么? Redis是一个内存数据存储系统,是一个开源的高性能键值对数据库。Redis支持多种数据类型,包括字符串、散列、列表、集合和有序集合。Redis能够提供极高的读取和写入性能,还提供了许多高级功能,例如发布/订阅、事务处理、队列和Lua脚本等。 二、Redis在无人驾驶技术中的应用实战 无人驾驶汽车需要实时获取传感器数据来进行决策和控制,传感器数据通常以数据流的形式发送到后端服务器进行处理和分析。回顾实验室中的一个典型案例,无人驾驶汽车系统会收集各种传感器数据,包括摄像头数据、雷达数据、GPS定位数据等。需要在短时间内处理大量的数据,并进行实时的决策和控制。在这些数据中,有些数据是可以直接保存的,例如车速、加速度、扭矩;有些数据则需要进行处理和转化,例如图像需要进行压缩和编码。Redis在这样的场景中展现了它的优势。 传感器数据缓存 由于无人驾驶汽车需要实时获取传感器数据,因此需要对数据进行缓存以加快数据获取速度。Redis提供了一个灵活的键值数据库,可以将传感器数据保存在内存中,以便快速访问。 数据处理和转换 在无人驾驶汽车中,一些数据需要进行处理和转换,例如来自传感器的原始数据需要进行数据压缩、编码和解码等操作。如果将这些数据保存在数据库中,将会增加数据访问的复杂度和网络带宽。而Redis中的管道可以使这些数据在内存中立刻进行处理和转换,然后通过网络发送到其他模块或外部应用程序。 数据交换和同步 在无人驾驶汽车项目中,通常需要将数据从传感器和控制器传输到后端服务器,然后再将数据分析和处理后发送回车辆。Redis的发布/订阅模式可将数据实时发布到指定的频道使得订阅者可以同步获取数据,这可用于实现数据交换和服务。 三、结论 Redis的高性能,灵活性和可扩展性使得它在处理大量数据的无人驾驶汽车应用中得到了广泛实际应用。无人驾驶汽车项目的成功如果要有好的结果,离不开数据的处理和管理,而Redis在数据管理中所扮演的重要角色,无疑会大大提高无人驾驶汽车的应用效率和数据同步性,为未来的技术发展奠定基础。 今天带大家了解了的相关知识,希望对你有所帮助;关于数据库的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~ Redis和Memcached的区别与使用场景 Redis实现分布式任务队列的方法
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis源码分析之set 和 sorted set 使用
Redis源码分析之set 和 sorted set 使用 0浏览 收藏 亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《Redis源码分析之set 和 sorted set 使用》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下Redisset、sorted,希望所有认真读完的童鞋们,都有实质性的提高。 set 和 sorted set 前言 前面在几个文章聊到了 list,string,hash 等结构的实现,这次来聊一下 set 和 sorted set 的细节。 set Redis 的 Set 是 String 类型的无序集合,集合成员是唯一的。 底层实现主要用到了两种数据结构 hashtable 和 inset(整数集合)。…
2024-12-01 阅读全文 →
FWQ
服务器教程
浅谈Redis在直播场景的实践方案
浅谈Redis在直播场景的实践方案 0浏览 收藏 亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《浅谈Redis在直播场景的实践方案》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下Redis直播,希望所有认真读完的童鞋们,都有实质性的提高。 背景信息 视频直播间作为直播系统对外的表现形式,是整个系统的核心之一。除了视频直播窗口外,直播间的在线用户、礼物、评论、点赞、排行榜等数据信息时效性高,互动性强,对系统时延有着非常高的要求,非常适合使用Redis缓存服务来处理。 本篇最佳实践将向您展示使用Redis版搭建视频直播间信息系统的示例。您将了解三类信息的构建方法: 实时排行类信息 计数类信息 时间线信息 实时排行类信息 实时排行类信息包含直播间在线用户列表、各种礼物的排行榜、弹幕消息(类似于按消息维度排序的消息排行榜)等,适合使用Redis中的有序集合(sorted set)结构进行存储。 Redis集合使用空值散列表(hash table)实现,因此对集合的增删改查操作的时间复杂度都是O(1)。有序集合中的每个成员都关联一个分数(score),可以方便地实现排序等操作。下面以增加和返回弹幕消息为例对有序集合在直播间信息系统中的实际运用进行说明。 以unix timestamp+毫秒数为分值,记录user55的直播间增加的5条弹幕: redis> ZADD user55:_danmu 1523959031601166 message111111111111 (integer) 1 11.160.24.14:3003> ZADD user55:_danmu 1523959031601266…
2024-12-01 阅读全文 →
FWQ
服务器教程
缓存数据丢了,原来是Redis持久化没玩明白
缓存数据丢了,原来是Redis持久化没玩明白 0浏览 收藏 对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《缓存数据丢了,原来是Redis持久化没玩明白》,主要介绍了Redis、缓存数据,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了! 我们都知道Redis是微服务架构中重要的基础数据库中间件,通过Redis可以将数据库中的数据缓存到内存中,当服务端有数据查询请求的时候,可以直接从内存中获取数据。如此,一方面服务端可以获得比较快的数据请求响应,另一方面降低了后端关系数据库的业务请求压力。但是正所谓尺有所短,寸有所长,Redis最大的优势就是内存数据也是最大的劣势,因为一旦服务器宕机或者服务器重启,内存中缓存的数据也会丢失。针对这样的场景,Redis提供了三种数据持久化机制,分别是AOF、RDB以及混合持久化来应对这种异常情况。本文主要从Redis实现持久化遇到的问题出发,站在设计者的角度思考相关问题的解决思路。 ​ AOF持久化 AOF持久化方式,即Append Only File,Redis通过记录执行修改操作命令这种记小本本的方式进行内存数据持久化。当需要通过AOF日志进行恢复数据时,Redis服务端启动后可以从日志文件中回放执行命令来实现内存数据恢复。当然了,AOF日志中记录的都是修改的命令,查询命令不会修改数据所以不需要进行记录。 可能大家都比较熟悉WAL(Write Ahead Log),即日志预写机制,它是数据库非常常用的确保数据操作原子性以及持久性的技术手段。拿Mysql举栗子,Mysql的WAL体现在undo log以及redo log等这些日志文件中,数据库在执行修改操作的时候并不是立刻将数据更新到磁盘上,而是先记录在日志中,主要目的是如果出现异常,可以直接从redo log中进行数据恢复,也就是说让Mysql知道上次意外发生的时候操作到底有没有成功,另外还可以将Mysql的随机写转换为顺序写,提升IO性能。但是AOF却不同,它是在Redis将数据写入内存之后,再将相关的操作命令写入AOF文件中。 那么问题来了,为什么Redis要采取这种独特的数据记录方式,而不是业界常用的WAL的方式呢?其实可以从以下两个层面思考原因。 (1)AOF文件中保存了执行缓存的命令,以便于保证在需要恢复数据的时候可以进行命令重放恢复数据,因此需要保证执行命令的合法性,而通过先缓存数据再进行命令追加日志的方式可以确保追加到AOF文件中的的命令都是合法有效的,redis在恢复数据的时候不需要再去检查命令是否有效,进一步提升内存数据恢复的效率。 (2)另外由于是在修改操作命令之后进行日志记录,日志记录的时候需要进行磁盘IO操作,因此不会阻塞当前的修改命令。 AOF文件内容是什么? 在搞清楚Redis为什么采用AOF文件记录修改命令之后,我们再来看看AOF文件中到底包含了哪些内容。 redis> SET mufeng handsomeOK Redis客户端与服务端之间采用RESP协议进行通信,它是一种应用层协议,对于Redis这种以效率为追求目标的中间件,通信协议必定要简单高效。就上面一条缓存操作命令来说:set mufeng handsome…
2024-12-01 阅读全文 →
FWQ
服务器教程
利用Redis实现分布式会话管理
利用Redis实现分布式会话管理 收藏 一分耕耘,一分收获!既然打开了这篇文章《利用Redis实现分布式会话管理》,就坚持看下去吧!文中内容包含等等知识点…希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢! 利用Redis实现分布式会话管理 随着互联网的发展,分布式系统已经成为了现代化系统架构中的重要组成部分之一。而在分布式系统中,会话管理一直是一个重要的课题。传统的会话管理往往借助于本地内存或数据库来存储会话数据,但这些方式在分布式环境下无法满足系统的要求。而Redis作为一个高性能内存数据库,可以很好地解决分布式会话管理的问题。 本文将介绍如何利用Redis实现分布式会话管理,并给出相应的代码示例。 一、Redis简介Redis(Remote Dictionary Server)是一个开源的、内存存储数据库,被广泛应用于互联网项目中。它支持多种数据结构,包括字符串、列表、哈希表、集合等,具有高性能、高可扩展性和丰富的功能特性。 二、分布式会话管理的优势传统的会话管理往往存在单点故障和性能瓶颈的问题,而利用Redis实现分布式会话管理能够解决这些问题,具有以下优势: 高可用性:Redis支持主从复制和哨兵机制,保证数据的可靠性和高可用性。 高性能:Redis以内存作为数据存储介质,并支持持久化机制,具有极高的读写性能。 高扩展性:Redis具有良好的横向扩展性,可以通过增加节点来提升系统的性能和容量。 三、利用Redis实现分布式会话管理下面是一个示例代码,演示了如何利用Redis实现分布式会话管理: import redis import uuid # 连接Redis服务器 r = redis.Redis(host='localhost', port=6379) def create_session(user_id): # 生成唯一的session_id…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis使用Bitmap的方法实现
Redis使用Bitmap的方法实现 0浏览 收藏 今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Redis使用Bitmap的方法实现》,主要内容是讲解redisbitmap等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习! 1. Bitmap 是什么 Bitmap(也称为位数组或者位向量等)是一种实现对位的操作的’数据结构’,在数据结构加引号主要因为: Bitmap 本身不是一种数据结构,底层实际上是字符串,可以借助字符串进行位操作。 Bitmap 单独提供了一套命令,所以与使用字符串的方法不太相同。可以把 Bitmaps 想象成一个以位为单位的数组,数组的每个单元只能存储 0 和 1,数组的下标在 Bitmap 中叫做偏移量 offset。 2. 占用存储空间 如上我们知道 Bitmap 本身不是一种数据结构,底层实际上使用字符串来存储。由于 Redis 中字符串的最大长度是 512…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis为什么快如何实现高可用及持久化
Redis为什么快如何实现高可用及持久化 0浏览 收藏 来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《Redis为什么快如何实现高可用及持久化》,介绍一下高可用、Redis持久化,希望对大家的知识积累有所帮助,助力实战开发! 前言 作为Java程序员,在面试过程中,缓存相关的问题是躲不掉的,肯定会问,例如缓存一致性问题,缓存雪崩、击穿、穿透等。说到缓存,那肯定少不了Redis,我在面试的时候也是被问了很多关于Redis相关的知识,但是Redis的功能太强大了,并不是一时半会儿能掌握好的,因为有些高级特性或是知识平时并不会用到。 所以回答的不好,人家就会觉得你对自己平时使用的工具都没有了解,自然就凉凉了。其实很早就有这个打算,打算好好总结一下Redis的知识,但也是由于自己都没有好好的了解Redis呢,所以一直没有开始。这次准备慢慢的来总结。 Redis为什么这么快 Redis是一个由C语言编写的开源的,基于内存,支持多种数据结构可持久化的NoSQL数据库。 它速度快主要是有以下几个原因: 基于内存运行,性能高效; 数据结构设计高效,例如String是由动态字符数组构成,zset内部的跳表; 采用单线程,避免了线程的上下文切换,也避免了线程竞争产生的死锁等问题; 使用I/O多路复用模型,非阻塞IO; 官网上给出单台Redis的可以达到10w+的QPS的, 一台服务器上在使用Redis的时候单核的就够了,但是目前服务器都是多核CPU,要想不浪费资源,又能提交效率,可以在一台服务器上部署多个Redis实例。 高可用方案 虽然单台Redis的的性能很好,但是Redis的单节点并不能保证它不会挂了啊,毕竟单节点的Redis是有上限的,而且人家单节点又要读又要写,小身板扛不住咋办,所以为了保证高可用,一般都是做成集群。 主从(Master-Slave) Redis官方是支持主从同步的,而且还支持从从同步,从从同步也可以理解为主从同步,只不过从从同步的主节点是另一个主从的从节点。 有了主从同步的集群,那么主节点就负责提供写操作,而从节点就负责支持读操作。 那么他们之间是如何进行数据同步的呢? 如果Slave(从节点)是第一次跟Master进行连接, 那么会首先会向Master发送同步请求psync; 主节点接收到同步请求,开始fork主子进程开始进行全量同步,然后生成RDB文件; 这个时候主节点同时会将新的写请求,保存到缓存区(buffer)中; 从节点接收到RDB文件后,先清空老数据,然后将RDB中数据加载到内存中; 等到从节点将RDB文件同步完成后再同步缓存区中的写请求。…
2024-12-01 阅读全文 →
FWQ
服务器教程
k8s部署redis集群实现过程实例详解
k8s部署redis集群实现过程实例详解 0浏览 收藏 大家好,我们又见面了啊~本文《k8s部署redis集群实现过程实例详解》的内容中将会涉及到k8sredis、集群部署等等。如果你正在学习数据库相关知识,欢迎关注我,以后会给大家带来更多数据库相关文章,希望我们能一起进步!下面就开始本文的正式内容~ 写在前面 一般来说,REDIS部署有三种模式。 单实例模式,一般用于测试环境。 哨兵模式 集群模式 后两者用于生产部署 哨兵模式 在redis3.0以前,要实现集群一般是借助哨兵sentinel工具来监控master节点的状态。 如果master节点异常,则会做主从切换,将某一台slave作为master。 引入了哨兵节点,部署更复杂,维护成本也比较高,并且性能和高可用性等各方面表现一般。 集群模式 3.0 后推出的 Redis 分布式集群解决方案 主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用 如果master节点异常,也是会自动做主从切换,将slave切换为master。 总的来说,集群模式明显优于哨兵模式 那么今天我们就来讲解下:k8s环境下,如何部署redis集群(三主三从)? 前置准备 一、nfs安装 nfs # 服务端…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis:构建高可用性系统的关键技术
Redis:构建高可用性系统的关键技术 收藏 珍惜时间,勤奋学习!今天给大家带来《Redis:构建高可用性系统的关键技术》,正文内容主要涉及到等等,如果你正在学习数据库,或者是对数据库有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家! Redis,即远程字典服务器(Remote Dictionary Server),是一个开源的高性能键值对存储系统。它以其出色的性能和可靠的高可用性而受到广泛关注和使用。在构建高可用性系统时,Redis扮演着关键的角色。本文将探讨一些使用Redis构建高可用性系统的关键技术,并提供具体的代码示例。 一、使用Redis实现数据复制 数据复制是实现高可用性的重要一环。Redis通过使用主从复制模型,实现数据的自动复制和同步,确保系统在主节点故障时仍能正常运行。以下是一个使用Redis实现主从复制的代码示例: # 主节点设置 CONFIG SET protected-mode no CONFIG SET port 6379 CONFIG SET appendonly yes SLAVEOF no one # 从节点设置 CONFIG…
2024-12-01 阅读全文 →