分类归档

服务器教程

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

FWQ
服务器教程
Redis基础之分析基础数据结构及用法
Redis基础之分析基础数据结构及用法 0浏览 收藏 本篇文章向大家介绍《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…
2024-12-01 阅读全文 →
FWQ
服务器教程
redis数据倾斜处理方法
redis数据倾斜处理方法 0浏览 收藏 学习数据库要努力,但是不要急!今天的这篇文章《redis数据倾斜处理方法》将会介绍到redis数据倾斜等等知识点,如果你想深入学习数据库,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助! 写在前面 我们在使用Redis分片集群时,集群最好的状态就是每个实例可以处理相同或相近比例的请求,但如果不是这样,则会出现某些实例压力特别大,而某些实例特别空闲的情况发生,本文就一起来看下这种情况是如何发生的以及如何处理。 1:什么是数据倾斜 数据倾斜分为两种,第一种是数据量倾斜,第二种是数据访问倾斜,定义如下: 数据量倾斜:数据分布的不均匀,导致某些实例数据特别多,进而导致处理的请求量大 数据访问倾斜:数据分布均匀,但是某些实例存在热点数据,进而导致处理的请求量大 可以看到不管是数据量倾斜,还是数据访问倾斜,最终导致的结果都是发生倾斜的实例处理了更多的数据请求,压力增大。 2:数据量倾斜 数据量倾斜最常见的原因就是在手动划分slot时,分配不均匀,除此之外,还有big key,hash tag,分别来看下。 2.1:slot分配不均匀 slot分配不均匀一般是由于手动分配造成,或者是因为某个实例节点配置较高,为了更加充分的利用其计算机资源,有意的给其分配更多的slot,但是这个多出的量其实是不好预估的,所以对于因为计算机性能差异有意分配的造成的slot不均匀还是要尽量避免,即保证所有的实例节点都具有相同的配置,然后将slot进行均匀分配。如果是已经发生了slot分配不均匀,我们可以通过迁移slot的方式来处理,首先通过cluster slots命令查看当前slot的分配情况: 上图slot0~4095分配到了实例192.168.10.3:6379,slot12288~16383分配到了实例192.168.10.5:6379。如下是一个slot迁移的例子。 假设我们要把 Slot 300 从源实例(ID 为 3)迁移到目标实例(ID 为 5),那要怎么做呢? 第1步,我们先在目标实例5上执行下面的命令,将Slot…
2024-12-01 阅读全文 →
FWQ
服务器教程
完美解决Redis在双击redis-server.exe出现闪退问题
完美解决Redis在双击redis-server.exe出现闪退问题 0浏览 收藏 小伙伴们对数据库编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《完美解决Redis在双击redis-server.exe出现闪退问题》,就很适合你,本篇文章讲解的知识点主要包括redis-server.exe闪退。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助! 问题 本人是习惯直接双击redis-server.exe来打开Redis程序,然后感觉没用了就关掉窗口,事实上很多时候即使你关闭了,在电脑后台依旧还连接着。这就会导致了你再次双击redis-server.exe的时候出现闪退情况。推荐内容 解决办法 win+R 打开命令行 1、通过cmd进入redis安装路径 // 看自己的Redis安装路径,注意:以下操作都是在Redis安装路径里面进行 C:\XXX\xxxx>cd D:\Program Files\Redis 2、检查是否存在连接情况 其实这一步做不做都问题不大,只是为了确认一下自己的问题是不是就是这个问题,因为很多时候,报同一个问题,但不一定是同个原因导致的。  D:\Program Files\Redis>redis-server.exe redis.windows.conf 一般都会有报下面这个问题: [7432] 28 Apr 15:16:10.286 # Creating Server TCP listening…
2024-12-01 阅读全文 →
FWQ
服务器教程
redis-cli -p 6379 info命令详解
redis-cli -p 6379 info命令详解 0浏览 收藏 亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《redis-cli -p 6379 info命令详解》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下info、redis-cli-p,希望所有认真读完的童鞋们,都有实质性的提高。 Server 服务器基本信息 # redis版本号 redis_version:5.0.3 # redis源码包git信息 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:da69b07a37c06dc8 # 运行模式(“独立”,“哨兵”或“集群”) redis_mode:standalone # 操作系统信息 os:Linux 3.10.0-514.el7.x86_64 x86_64…
2024-12-01 阅读全文 →
FWQ
服务器教程
如何解决Spring Boot中Redis序列化乱码的问题?
如何解决Spring Boot中Redis序列化乱码的问题? 0浏览 收藏 最近发现不少小伙伴都对数据库很感兴趣,所以今天继续给大家介绍数据库相关的知识,本文《如何解决Spring Boot中Redis序列化乱码的问题?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~ SpringBoot下Redis序列化乱码 项目最初的序列化方案用的是JDK序列化类,但保存到redis里会产生乱码不方便查看管理。 public void setRedisTemplate(RedisTemplate  redisTemplate) {         redisTemplate.setKeySerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));         redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));         redisTemplate.setHashKeySerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));         redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));         this.redisTemplate = redisTemplate;     } 经过上网查看是由于序列化类的问题,我们不用jdk的序列化方法,采用json的格式 public void setRedisTemplate(RedisTemplate  redisTemplate) {         redisTemplate.setKeySerializer(new StringRedisSerializer());         redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());         redisTemplate.setHashKeySerializer(new StringRedisSerializer());         redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());         this.redisTemplate = redisTemplate;     } 注意问题 采用上述序列化器时需保证实体类里的所有get方法都有属性字段,否则反序列话时会出现问题,若没有需要加@JsonIgnore注解,序列化时会进行忽略。 SpringBoot配置Redis序列化规则,防止乱码…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis存储系统Pika架构设计的方法是什么
Redis存储系统Pika架构设计的方法是什么 0浏览 收藏 从现在开始,努力学习吧!本文《Redis存储系统Pika架构设计的方法是什么》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你! Pika 是 360 基础架构团队和 DBA 团队联合研发的一款高效、稳定、简单可依赖的开源的 NoSQL 数据库产品。完全兼容 Redis 协议,支持 5 种数据结构(string,hash,list,set,zset),数据持久化到 RocksDB,相比于 Redis 内存的存储方式,能极大减少服务器资源的占用,增强了数据的可靠性。可以采用单机和集群两种模式部署。Pika 项目 2015 年启动,随后在 Github 上开源,现有 3700 stars,35个 contributors,社区有大量的线上业务使 Pika。…
2024-12-01 阅读全文 →
FWQ
服务器教程
浅析Redis Sentinel 与 Redis Cluster
浅析Redis Sentinel 与 Redis Cluster 0浏览 收藏 知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个数据库开发实战,手把手教大家学习《浅析Redis Sentinel 与 Redis Cluster》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟! 一、前言 互联网高速发展的今天,对应用系统的抗压能力要求越来越高,传统的应用层+数据库已经不能满足当前的需要。所以一大批内存式数据库和Nosql数据库应运而生,其中redis,memcache,mongodb,hbase等被广泛的使用来提高系统的吞吐性,所以如何正确使用cache是作为开发的一项基技能。本文主要介绍Redis Sentinel 及 Redis Cluster的区别及用法,Redis的基本操作可以自行去参看其官方文档 。 其他几种cache有兴趣的可自行找资料去学习。 二、Redis Sentinel 及 Redis Cluster 简介 1、Redis Sentinel  Redis-Sentinel(哨兵模式)是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自懂切换。它的主要功能有以下几点:…
2024-12-01 阅读全文 →
FWQ
服务器教程
如何使用Redis和JavaScript实现分布式锁机制
如何使用Redis和JavaScript实现分布式锁机制 收藏 本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《如何使用Redis和JavaScript实现分布式锁机制》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~ 如何使用Redis和JavaScript实现分布式锁机制 引言:在分布式系统中,由于多个节点之间的并行操作,可能会导致数据不一致的问题。为了保证在分布式环境中的数据操作的一致性,我们可以使用分布式锁机制。本文将介绍如何使用Redis和JavaScript实现简单的分布式锁。 一、分布式锁的概念分布式锁是一种并发控制的机制,它能够确保在分布式环境中的多个节点并发操作同一资源时的可靠性和一致性。常见的分布式锁实现方式有基于数据库的锁、基于文件的锁以及基于内存的锁等。本文将重点介绍基于Redis和JavaScript实现的分布式锁机制。 二、使用Redis实现分布式锁Redis是一个高性能的键值存储系统,它支持多种数据结构和操作。为了实现分布式锁,我们可以利用Redis的原子操作和过期时间特性。 获取锁当一个节点需要获取锁时,可以尝试使用SETNX命令(SET if Not eXists)在Redis中创建一个键,并设置一个过期时间,表示这个节点已经获得了锁。如果SETNX成功,则表示获取锁成功;否则,表示已经有其他节点获取了锁,当前节点需要等待一段时间后再次尝试获取锁。为了避免死锁,需要为锁设置一个合适的过期时间,确保即使锁的持有者由于某种原因无法释放锁,其他节点也能够获取到锁。 释放锁当一个节点执行完需要加锁的操作后,需要释放锁,让其他节点可以获取锁。节点可以使用DEL命令来删除Redis中的锁键,表示当前节点已经释放了锁。 三、JavaScript实现分布式锁在JavaScript中,我们可以使用Redis的客户端库来操作Redis,并实现分布式锁的机制。下面是一个使用Node.js和ioredis库实现分布式锁的示例代码: const Redis = require('ioredis'); const redis = new Redis(); async function acquireLock(lockKey, expireTime) { const…
2024-12-01 阅读全文 →
FWQ
服务器教程
如何快速了解Redis
如何快速了解Redis 0浏览 收藏 IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《如何快速了解Redis》,聊聊,我们一起来看看吧! 1、Redis是现在很受欢迎的NoSQL数据库之一,它是一个使用ANSI  C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。默认情况下,Redis是一个缓存存储器,被调用作数据库使用,它利用易失性内存,可以为用户提供完整的持久性选项和对其他数据类型的支持。 2、Redis 的应用场景包括:缓存系统、计数器、消息队列系统、排行榜、社交网络和实时系统。 3、Redis能够使用所有流行语言开发的客户端API,比如C语言、Ruby、Python、Java、JavaScript等。 4、Redis的持久性是出了名的,它的关系数据库是以AOF方式按指定间隔数据备份,从而对数据集进行时间点快照,记录后写入(write)操作。 5、如果服务器没有后续执行命令的话,Redis的快照或Redis后台保存过程会介入,所以当任何在随机存储器(RAM)中报告为基元的指令在磁盘快照中,也会报告为基元。 6、一般来说,Redis最多可以处理2³²个键,即hash、list、set和sorted  set达到峰值时可以使用2³²个元素。实际测试中,每个实例至少可以处理2.5亿个键。换句话说,使用Redis的限制很可能是机器/基础结构中的可用内存。 7、在数据总是留于内存中这一方面,Redis有着超过常规数据库的读写操作能力,这是它的优秀性能的体现之一,也是许多开发人员选择它的原因。 8、Redis将数据存储为键值对,其中某些类型的数据结构充当键。此外,它还允许对象将其键和值的上限设置为512兆字节。这种键散列的系统,可用于存储键-值对,被称为Redis哈希表。 9、Redis 2.0的发布提供了数据扩散的功能,应用了订阅/发布消息传递协议,也就是pub-sub模型,这一功能是很实用的。 10、Twitter、Pinterest和Github,都有使用Redis项目,这些都是行业内有名的大企业,可想而知Redis有多好用啦。 文中关于redis的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何快速了解Redis》文章吧,也可关注golang学习网公众号了解相关技术文章。 版本声明 本文转载于:亿速云 如有侵犯,请联系 删除 如何在PHP中使用SESSION来管理和操作用户相关数据类型 PHP对接QQ接口实现即时通信功能
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis在JavaScript开发中的应用:如何缓存用户会话信息
Redis在JavaScript开发中的应用:如何缓存用户会话信息 收藏 知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个数据库开发实战,手把手教大家学习《Redis在JavaScript开发中的应用:如何缓存用户会话信息》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟! Redis在JavaScript开发中的应用:如何缓存用户会话信息 引言:随着互联网的发展,用户访问网站或应用的数量急剧增加。对于开发人员来说,提高网站或应用的性能是至关重要的。而缓存是一个被广泛使用的技术,它可以显著提高应用的性能。本文将介绍如何使用Redis在JavaScript开发中缓存用户会话信息,以提高应用的性能。 一、什么是Redis?Redis(Remote Dictionary Server)是一个内存数据库,它提供了键值对存储的功能。与传统的关系型数据库相比,Redis更适合处理高速的读写操作。Redis是一个开源项目,它提供了多种客户端库,可以方便地在各种编程语言中使用。 二、为什么使用Redis来缓存用户会话信息?在网站或应用的开发中,用户会话信息是一种经常被使用的数据。用户会话信息包括用户的登录状态、个人偏好设置等,这些信息需要在用户访问不同页面时保持一致性。而传统的方法是将用户会话信息存储在数据库中,每次需要读取时都从数据库中查询。这种方法在读取频繁的情况下会导致数据库的负载过高,进而影响应用的性能。而使用Redis来缓存用户会话信息可以显著提高应用的性能,因为Redis的读写速度非常快。 三、如何使用Redis来缓存用户会话信息? 安装Redis首先,需要安装Redis数据库。可以从Redis官方网站(https://redis.io/)下载最新的Redis安装包,并按照官方文档进行安装。 连接Redis数据库在JavaScript中使用Redis时,可以使用第三方库ioredis(https://github.com/luin/ioredis)来进行连接和操作。通过npm可以方便地安装ioredis库: npm install ioredis 然后,在代码中引入库: const Redis = require('ioredis'); 接着,可以使用以下代码连接到Redis数据库: const redis = new Redis({ host: 'localhost',…
2024-12-01 阅读全文 →