分类归档

服务器教程

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

FWQ
服务器教程
利用PHP和Redis实现实时通知功能:如何处理消息推送和即时通信
利用PHP和Redis实现实时通知功能:如何处理消息推送和即时通信 收藏 来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《利用PHP和Redis实现实时通知功能:如何处理消息推送和即时通信》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发! 标题:利用PHP和Redis实现实时通知功能:如何处理消息推送和即时通信 引言:随着互联网的发展,实时通知功能在各种应用中都得到了广泛的应用,无论是社交网络、电子商务还是在线聊天,实时通知都起到了重要的作用。本文将介绍如何利用PHP和Redis实现实时通知功能,并提供一些代码示例供参考。 一、Redis简介:Redis是一个基于内存的Key-Value存储系统,支持持久化、分布式、集群等多种功能。它可以用作数据库、缓存、分布式锁等多种用途。在实时通知功能中,Redis的发布订阅机制是一个非常有用的特性。 二、实现消息推送功能实时消息推送是指服务器端向客户端主动推送消息,而不是客户端主动请求消息。通过使用Redis的发布订阅机制,可以轻松实现消息推送功能。下面是一个示例代码: <?php // 订阅消息 $redis = new Redis(); $redis->pconnect('127.0.0.1', 6379); $redis->subscribe(['channel'], function ($instance, $channel, $message) { // 接收到消息后的处理逻辑 echo 'Receive message from…
2024-12-01 阅读全文 →
FWQ
服务器教程
关于Redis数据持久化的概念介绍
关于Redis数据持久化的概念介绍 0浏览 收藏 本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《关于Redis数据持久化的概念介绍》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~ 一、数据持久化的概述 Redis是内存数据库,数据都是存储在内存中,为了避免服务器断电等原因导致Redis进程异常退出后数据的永久丢失,需要定期将Redis中的数据以某种形式(或命数据令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置(NFS) 。 Redis提供两种方式进行持久化: RDB持久化:原理是将Reids在内存中的数据库记录定时保存到磁盘上。(类似快照) AOF持久化(append only file):原理是将Reids的操作日志以追加的方式写入文件,类似于MySQL的binlogo(基于日志持久化方式) 由于AOF持久化的实时性更好,即当进程意外退出时丢失的数据更少(一般设置每秒保存一次),因此AOF是目前主流的持久化方式,RDB持久化基本都会开启(用于集群) 1、RDB持久化 (1)RDB持久化是指在指定的时间间隔内将内存中当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化),用二进制压缩存储,保存的文件后缀是rdb;当Redis重新启动时,可以读取快照文件恢复数据。 Redis数据库文件,全称Redis DataBase -数据持久化方式之一 -数据持久化默认方式 -按照指定时间间隔,将内存中的数据集快照写入硬盘-快照术语叫Snapshot - 恢复时,将快照文件直接读入内存 ·定义RDB文件名 - dbfilename "dump.rdb" #文件名 (2)触发保存…
2024-12-01 阅读全文 →
FWQ
服务器教程
centos7怎么安装单机环境redis3.2
centos7怎么安装单机环境redis3.2 0浏览 收藏 小伙伴们对数据库编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《centos7怎么安装单机环境redis3.2》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助! 本次安装的系统版本如下: [root@zhangqinglei ~]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)[root@zhangqinglei ~]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarchDistributor ID: CentOSDescription: CentOS Linux release 7.5.1804 (Core)Release: 7.5.1804Codename: Core 因不同的系统版本会存在一些差异,因此记录比对。后续针对centos其他版本测试安装说明。…
2024-12-01 阅读全文 →
FWQ
服务器教程
如何用redis setNX命令来加锁
如何用redis setNX命令来加锁 0浏览 收藏 数据库不知道大家是否熟悉?今天我将给大家介绍《如何用redis setNX命令来加锁》,这篇文章主要会讲到命令、加锁、redissetNX等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步! 用redis setNX命令来加锁 加锁和释放锁,都需要原子操作,不然在中途中断就会发生异常, 删锁的时候也只能删除自己对应线程的锁。 下面是用sexNX命令加锁的模板 加锁失败后,休眠一段时候后,再次调用(自旋锁) 这个还是会有一个问题, 如果加锁的时间是30秒,业务执行的时候了40秒,这个其他的线程就能抢到锁,所以加锁的时间必须大于业务执行的时间 官方文档 建议 使用redisson来用分布式锁 redis几种加锁的实现 1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行…
2024-12-01 阅读全文 →
FWQ
服务器教程
如何在Docker中安装MySQL和Redis镜像?
如何在Docker中安装MySQL和Redis镜像? 0浏览 收藏 学习数据库要努力,但是不要急!今天的这篇文章《如何在Docker中安装MySQL和Redis镜像?》将会介绍到等等知识点,如果你想深入学习数据库,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助! docker安装mysql、redis镜像 docker镜像商店:官方镜像商店 redis安装下载 下载镜像: 可直接默认下载最新镜像,也可以指定版本下载【注意,版本差异不大的软件可以直接下载最新版本,差异大的,例如java,mysql等,最好指定熟悉的版本进行下载】 docker pull redis 启动镜像: docker run --name=redis -d --restart=always -p 6379:6379 redis --name:别名 -d:后台运行,镜像不会随窗口关闭而关闭 --restart=always:随docker启动而自启 可以进行后配置:docker update –restart=always [容器名称|id] -p:6379[主机端口]:6379[映射端口],如果有版本号,应该带上版本号redis:6.2.6 挂载外部文件启动: 提前创建好文件夹和文件,redis.conf如果没有特别的配置,可以参考(测试环境,生产环境换成本地,关闭密码即可): #redis使用自定义配置文件启动   docker run -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /mydata/redis/data:/data \ -d --name redis \ --restart=always \…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis特殊数据类型之Geospatial怎么应用
Redis特殊数据类型之Geospatial怎么应用 0浏览 收藏 从现在开始,努力学习吧!本文《Redis特殊数据类型之Geospatial怎么应用》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你! 概述简介 Redis Geospatial 是 Redis 3.2 版本新增的数据类型,主要用于存储地理位置信息,并对存储的信息进行操作。 在日常生活中,我们越来越依赖搜索 “附近的餐馆”、在打车软件上叫车,这些都离不开基于位置信息服务(Location-Based Service,LBS)的应用。LBS 应用访问的数据是和人或物关联的一组经纬度信息,而且要能查询相邻的经纬度范围,GEO 就非常适合应用在 LBS 服务的场景中。 内部实现 GEO 本身并没有设计新的底层数据结构,而是直接使用了 Sorted Set 集合类型。 GEO 类型使用 GeoHash 编码方法实现了经纬度到…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis实现限流器的三种方法(小结)
Redis实现限流器的三种方法(小结) 0浏览 收藏 IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《Redis实现限流器的三种方法(小结)》,聊聊Redis限流器,我们一起来看看吧! 方法一:基于Redis的setnx的操作 我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(Compare and swap)的操作的时候,同时给指定的key设置了过期实践(expire),我们在限流的主要目的就是为了在单位时间内,有且仅有N数量的请求能够访问我的代码程序。所以依靠setnx可以很轻松的做到这方面的功能。 比如我们需要在10秒内限定20个请求,那么我们在setnx的时候可以设置过期时间10,当请求的setnx数量达到20时候即达到了限流效果。代码比较简单就不做展示了。 当然这种做法的弊端是很多的,比如当统计1-10秒的时候,无法统计2-11秒之内,如果需要统计N秒内的M个请求,那么我们的Redis中需要保持N个key等等问题。 在具体实现的时候,可以考虑使用拦截器HandlerInterceptor : public class RequestCountInterceptor implements HandlerInterceptor {     private LimitPolicy limitPolicy;     public RequestCountInterceptor(LimitPolicy limitPolicy)…
2024-12-01 阅读全文 →
FWQ
服务器教程
分享几道 Redis 高频面试题,面试不用愁
分享几道 Redis 高频面试题,面试不用愁 0浏览 收藏 来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《分享几道 Redis 高频面试题,面试不用愁》,介绍一下Redis、线程、集群,希望对大家的知识积累有所帮助,助力实战开发!   1、说说 Redis 都有哪些应用场景? 缓存:这应该是 Redis 主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力。 共享Session:对于一些依赖 session 功能的服务来说,如果需要从单机变成集群的话,可以选择 redis 来统一管理 session。 消息队列系统:消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务 解耦、非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功 能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功 能基本可以满足。比如在分布式爬虫系统中,使用 redis 来统一管理…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis 存储对象信息用 Hash 和String的区别
Redis 存储对象信息用 Hash 和String的区别 0浏览 收藏 本篇文章给大家分享《Redis 存储对象信息用 Hash 和String的区别》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。 日常工作中我们存储对象信息的时候,一般有两种做法,一种是用 Hash 存储,另一种是 String 存储。但好像并没有所谓的最佳实践,那么实际上到底用什么数据结构存储更好呢? 首先简单回顾下,Redis 的 Hash 和 String 结构。 String String 数据结构是简单的 key-value 类型,value 其实不仅是 String,也可以是数字。 Redis 中的 String 可以表示很多语义: 字符串(bits)…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis缓存三大异常的处理方案梳理总结
Redis缓存三大异常的处理方案梳理总结 0浏览 收藏 本篇文章给大家分享《Redis缓存三大异常的处理方案梳理总结》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。 一、背景 Redis是一个完全开源的、遵守BSD协议的、高性能的key-value数据结构存储系统,它支持数据的持久化,可以将内存中的数据保存在磁盘中,而且不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储,功能十分强大,Redis还支持数据的备份,即master-slave模式的数据备份,从而提高可用性。当然最重要的还是读写速度快,作为我们平常开发中最常用的缓存方案被广泛应用。但在实际应用过程中,它会存在缓存雪崩、缓存击穿和缓存穿透等异常情况,如果忽视这些情况可能会带来灾难性的后果,下面主要对这些缓存异常和常见处理方案进行相应分析与总结。 二、缓存雪崩 (一)是什么 一段时间内本应在redis缓存中处理的大量请求,都发送到了数据库进行处理,导致对数据库的压力迅速增大,严重时甚至可能导致数据库崩溃,从而导致整个系统崩溃,就像雪崩一样,引发连锁效应,所以叫缓存雪崩。 (二)为什么 出现上述情况的常见原因主要有以下两点: 大量缓存数据同时过期,导致本应请求到缓存的需重新从数据库中获取数据。 redis本身出现故障,无法处理请求,那自然会再请求到数据库那里。 (三)怎么办 针对大量缓存数据同时过期的情况: 实际设置过期时间时,应当尽量避免大量key同时过期的场景,如果真的有,那就通过随机、微调、均匀设置等方式设置过期时间,从而避免同一时间过期。 添加互斥锁,使得构建缓存的操作不会在同一时间进行。 双key策略,主key是原始缓存,备key为拷贝缓存,主key失效时,可以访问备key,主key缓存失效时间设置为短期,备key设置为长期。 后台更新缓存策略,采用定时任务或者消息队列的方式进行redis缓存更新或移除等。 针对redis本身出现故障的情况: 在预防层面,可以通过主从节点的方式构建高可用的集群,也就是实现主Redis实例挂掉后,能有其他从库快速切换为主库,继续提供服务。 如果事情已经发生了,那就要为了防止数据库被大量的请求搞崩溃,可以采用服务熔断或者请求限流的方法。当然服务熔断相对粗暴一些,停止服务直到redis服务恢复,请求限流相对温和一些,保证一些请求可以处理,不是一刀切,不过还是看具体业务情况选择合适的处理方案。 三、缓存击穿 (一)是什么 缓存击穿一般出现在高并发系统中,是大量并发用户同时请求到缓存中没有但数据库中有的数据,也就是同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大。和缓存雪崩不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。 (二)为什么 这种情况其实一般出现的原因就是某个热点数据缓存过期,由于是热点数据,请求并发量又大,所以过期的时候还是会有大量请求同时过来,来不及更新缓存就全部打到数据库那边了。…
2024-12-01 阅读全文 →