想弄明白Redis,看完这些就懂了,人人都可以学好Redis

社招必问:分布式 Redis 前期做还是后期做?看完你就懂了 在一次 Java 社招面试中,面试官问我:分布式 Redis 是前期做还是后期再做?这个问题像打开了我脑海里的仓鼠粮仓故事,让我想起当年痛苦的扩容经历。其实 Redis 极其轻量,一开始就多实例分布式部署才是最优解,否则后期迁移会让你怀疑人生。 阅读详情

Redis总结

简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

支持数据格式

key-value类型的数据,同时还提供list,set,zset,hash、sorted set等数据结构的存储

分布式锁实现

setnx 命令来实现,通过lua脚本来保证加锁是原子性的。

持久化方式

Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)1.RDB RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。优点: 适合大规模的数据恢复。 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。缺点: 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。所以Redis 的持久化和数据的恢复要选择在夜深人静的时候执行是比较合理的。2.AOFRedis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。优点:数据的完整性和一致性更高缺点:因为AOF记录的内容多,文件会越来越大,数据恢复也会越来越慢。总结Redis 默认开启RDB持久化方式,在指定的时间间隔内,执行指定次数的写操作,则将内存中的数据写入到磁盘中。RDB 持久化适合大规模的数据恢复但它的数据一致性和完整性较差。Redis 需要手动开启AOF持久化方式,默认是每秒将写操作日志追加到AOF文件中。AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。Redis 针对 AOF文件大的问题,提供重写的瘦身机制。若只打算用Redis 做缓存,可以关闭持久化。若打算使用Redis 的持久化。建议RDB和AOF都开启。其实RDB更适合做数据的备份,留后手。AOF出问题了,还有RDB。

Redis的回收策略

volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰no-enviction(驱逐):禁止驱逐数据

为什么速度快

1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;4、使用多路I/O复用模型,非阻塞IO;5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;

还不懂Redis,看完这个故事就明白了 我是Redis 你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。 说起我的诞生,跟关系数据库MySQL还挺有渊源的。 在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用户请求也随之暴涨,而每一个用户请求都变成了对它的一个又一个读写操作,MySQL是苦不堪言。尤其是到“双11”、“618“这种全民购物狂欢的日子,都是MySQL受苦受难的日子。 据后来MySQL告诉我说,其实有一大半的用户请求都是读操作,而且经常都是重复查询一个东西,浪费 阅读详情

相关推荐

redis界面化工具

redis集群,可以直接清除相应端口号的缓存

springboot第32集:redis系统-android系统-Nacos Server

Error parsing HTTP request header HTTP method names must be tokens检查发送HTTP请求的客户端代码,确保方法名中不包含非法字符。通常情况下,HTTP请求的方法名应该是简单的标识符,例如"GET"、"POST"、"PUT"等。如果你使用的是浏览器发送HTTP请求(例如使用JavaScript中的Fetch或XMLHttpRequest...

程序员哆啦A梦,蓝胖子 457

Android代码-lettuce-core

lettuce - Advanced Java Redis client Lettuce is a scalable thread-safe Redis client for synchronous, asynchronous and reactive usage. Multiple threads may share one connection if they avoid blocking and transactional operations such as BLPOP and MULTI/EXEC. Lettuce is built with netty. Supports advanced Redis features such as Sentinel, Cluster, Pipelining, Auto-Reconnect and Redis data models. This version of Lettuce has been tested against the latest Redis source-build. synchronous, asynch

Redis-Android 项目教程

Redis-Android 项目教程 1. 项目介绍 Redis-Android 是一个开源项目,旨在将 Redis 数据库移植到 Android 平台上。通过这个项目,开发者可以在 Android 设备上运行 Redis 数据库,从而利用 Redis 的高性能和丰富的功能特性。Redis 是一个开源的内存数据结构存储系统,常用作数据库、缓存和消息代理。Redis-Android 使得这些功能可以...

gitblog_01165的博客 1502

VisionPro动态坐标系构建:CogFixtureTool与CogFixtureNPointToNPointTool实战解析

本文深入解析了VisionPro中动态坐标系构建的核心技术,重点对比了CogFixtureTool与CogFixtureNPointToNPointTool的原理与应用。通过实战案例,阐述了如何利用坐标跟随(Fixturing)技术解决工业视觉检测中因零件位置偏移导致的测量不准问题,实现从“固定”到“随动”的思维跃迁,从而构建稳定、精准的检测程序。

weixin_29207439的博客 562

Delft3D从入门到实践:安装、编译与首次模拟指南

本文为Delft3D初学者提供了一份详尽的从零开始指南。内容涵盖软件获取、许可证申请、图形界面安装、核心计算内核的编译环境搭建与编译步骤,以及最终整合运行首个水动力模拟的全流程。重点解决了Windows系统下Delft3D安装与编译的常见问题,帮助用户快速上手这一开源水动力与泥沙输运模拟工具。

weixin_29303701的博客 538

Redis-Android 项目常见问题解决方案

Redis-Android 项目常见问题解决方案 1. 项目基础介绍 Redis-Android 是一个将 Redis 数据库跨编译为适用于 Android 设备的开源项目。它允许在 Android 设备上运行 Redis 数据库,支持 ARM 架构的 CPU。这个项目的主要编程语言是 Java,用于 Android 的集成和操作。 2. 新手常见问题及解决步骤 问题一:如何将 Redis-And...

gitblog_00217的博客 435

Allegro规则管理器实战:5步搞定Xnet等长组设置(含Relative Propagation Delay配置)

本文详细介绍了在Cadence Allegro规则管理器中,通过5个实战步骤高效设置Xnet等长组的方法。核心内容包括创建Xnet属性、定义引脚对、建立匹配组,并重点讲解了Relative Propagation Delay规则的配置与应用,帮助PCB设计师确保高速信号时序对齐,提升系统稳定性与性能。

weixin_29193259的博客 514

redis 安卓部署,图形化界面连接,设置密码

redis 安卓部署,图形化界面连接,设置密码

qq_41976630的博客 2871

【QEMU系统分析之TPM篇(一)】

本文以 QEMU 8.2.2 为例,分析其 TPM-emulator 模块的实现,并为 QEMU 添加 Windows 平台的TPM 模拟器的支持。

David唐辉的博客 1190

晶振(晶体振荡器)测试方法详解

晶振测试方法分为无源和有源两种类型。无源晶振(两脚)需用示波器测试波形,重点关注正弦波形状、200mV-1.5Vpp幅值和频率精度;有源晶振(四脚)通电后直接输出方波。测试要点包括:示波器使用10X探头、AC耦合,带宽需5倍于晶振频率;万用表可初筛短路/开路;替换法是工程最有效方法。常见故障排查顺序:供电→复位→焊接→型号→负载电容→波形观察→更换晶振→MCU配置。负载电容需按公式计算匹配,示波器观察是核心测试手段。

jiujiujinyuxi的博客 923

还不懂Redis?看完这个故事就明白了!

我是Redis 你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。 说起我的诞生,跟关系数据库MySQL还挺有渊源的。 在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用户请求也随之暴涨,而每一个用户请求都变成了对它的一个又一个读写操作,MySQL是苦不堪言。尤其是到“双11”、“618“这种全民购物狂欢的日子,都是MySQL受苦受难的日子。 据后来MySQL告诉我说,其实有一大半的用户请求都是读操作,而且经常都是重复查询一个东西

xuanyuan_fsx的专栏 3473

Hi3516CV610 YOLOv8模型转换与部署实战:从源码到板端推理全流程解析

本文详细解析了将YOLOv8模型部署到Hi3516CV610开发板的全流程。内容涵盖从Ubuntu环境搭建、模型获取与验证,到关键的PyTorch模型转换为ONNX格式,并利用海思工具链量化生成板端可执行的.wk文件。最后,指导开发者编写板端C程序,完成视频流处理、NNIE推理及结果后处理,并提供了部署调试与性能优化的实用技巧。

weixin_29215815的博客 268

分布式锁用 Redis 还是 Zookeeper?看完你就明白了!!

点击上方 "程序员小乐"关注,星标或置顶一起成长每天凌晨00点00分,第一时间与你相约每日英文There will be a tear that lets you g...

程序员小乐 1万+

YOLOv8改进 | 卷积模块 | 用DWConv卷积替换Conv【轻量化网络】

YOLOv8改进,yolov8,yolov8创新,yolov8涨点

kay_545 7155

metahuman 下载材质 脸部灰白 脸部过亮

metahuman 下载材质 脸部灰白 脸部过亮

jacke121的专栏 243

Redis Cluster你弄明白了吗?

目录 一、前言 二、Redis Cluster集群 1、基本原理 2、网络拓扑: 3、通信协议: 4、自动数据分片 5、数据迁移(节点扩缩容) 6、数据离散性 7、应用 三、后话 一、前言 上一篇文章我们聊到客户端分片(Redis Sharding)技术,这里我们接着聊一下Redis Cluster这种服务端分片的解决方案。我对服务端分片的理解是对1)具体数据片数如何实现;2)服务端的数据的存储、迁移;3)数据分片的高可用对客户端来说就是透明无感的。 二、Red...

justyman的博客 805

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

啥?Redis都没弄明白,Tendis就来了?

Tendis是腾讯互娱CROS DBA团队 & 腾讯云数据库团队自主设计和研发的分布式高性能KV存储数据库,兼容Redis核心数据结构与接口,可提供大容量、低成本、强持久化的数据库能力,适用于兼容Redis协议、需要大容量且较高访问性能的温冷数据存储场景。Tendis目前已经被应用到腾讯内、外部大型项目中。 集群架构 Tendis使用去中心化集群架构,每个数据节点都拥有全部的路由信息,用户可以访问集群中的任意节点,并且通过redis的move协议,最终路由到正确的节点。 每个Tendis节点维护各

weixin_46273997的博客 892

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

超简单,人人都能弄明白的 6 种限流实现方案

前言 为了上班方便,去年我在南山附近租了一个房间,这样离我上班的地方就近了,它为我节约了很多的时间成本,我可以用它来做很多有意义的事,最起码不会因为堵车而闹心了,幸福感直线上升。 但即使这样,生活也有其他的烦恼。南山的居住密度也比较大,因此停车就成了头痛的事,我租的是路两边的非固定车位,每次只要下班回来,一定是没有车位停了,因此我只能和别人的车并排停着,但这样带来的问题是,我每天早上都要被挪车的电话给叫醒,心情自然就不用说了。 但后来几天,我就慢慢变聪明了,我头天晚上停车的时候,会找第二天限行的车并排

q1472750149的博客 765

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

看完这篇,你还不明白Redis分布式锁?

何为分布式锁?        分布式应用进行逻辑处理时经常会遇到并发问题,而处理并发问题的方式之一就是分布式锁。在很多场景中,我们为了保证数据的最终一致性,就会选择很多技术方案来支撑,例如分布式事务、分布式锁等,那么什么是分布式锁,分布式锁又会应用到哪些业务场景呢? 业务场景举例 一个操作要修改用户的状态,那这个操作又该如何实现分布式锁呢? 那么上述的问题又该如何解决呢? 场景一:修改用户状态,首先分析如何去修改用户的状态,这一操作需

派大星的博客 1469

看完后,我才明白 Redis 为什么默认 16 个数据库?

点击上方“程序猿技术大咖”,关注加群讨论导读:在实际项目中Redis常被应用于做缓存,分布式锁、消息队列等。但是在搭建配置好Redis服务器后很多朋友应该会发现和有这样的疑问,为什么Re...

xcbeyond|疯狂源自梦想,技术成就辉煌 1381

【Redis】三种持久化机制?RDB、AOF、混合?这下弄明白了

首先来谈谈什么是持久化?持久化就是将数据从内存保存到磁盘的过程,其目的就是为了防止数据丢失。为什么要这样做?因为内存中的数据在重启服务器后就会丢失,而磁盘上的数据则不会,因此为了系统稳定,我们就需要把数据进行持久化。同时持久化功能也是 Redis 和 Memcached 最主要的区别之一,因为 Redis 支持持久化而 Memcached 不支持~那么 Redis 具体是如何实现持久化的呢?往下看~

CYK_byte的博客 2431
上一篇: Spring是否代表着目前Java技术的顶峰,未来的Java将如何发展?
下一篇: 有的人还在玩 JDK7,JDK 15 却马上要来了!|新特性尝鲜
程序媛月下
博客等级 码龄7年 5262粉丝 462原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值