![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
08Redis
文章平均质量分 78
Redis
专注_每天进步一点点
成为健康快乐长寿有价值的人,拥有明亮灵动的眼睛,平静谦和的微笑。
展开
-
014 到官网看Redis分布式锁的实现原理
读读Redis的官网,学第一手的资料:Redid官方文档地址Redis中国用户组:Redis中国用户组网址或者看看书《Redis 深度历险: 核心原理和应用实践》1、Redis官网上关于Redission的描述2、Redisson的GitHub上的说明进去之后内容很多,我们主要看分布式锁的部分:8.4. 红锁(RedLock)基于Redis的Redisson红锁RedissonRedLock对象实现了Redlock介绍的加锁算法。该对象也可以用来将多个RLock对象.原创 2022-04-16 05:42:37 · 731 阅读 · 0 评论 -
013 Redis单机、主从、哨兵、集群
话说有一名意大利程序员,在 2004 年到 2006 年间主要做嵌入式工作,之后接触了 Web,2007 年和朋友共同创建了一个网站,并为了解决这个网站的负载问题(为了避免 MySQL 的低性能),于是亲自定做一个数据库,并于 2009 年开发完成,这个就是 Redis。这个意大利程序员就是 Salvatore Sanfilippo 江湖人称 Redis 之父,大家更习惯称呼他 Antirez。 Redis 技术越来越火爆,其超高的性能,简洁轻量的设计,易上手,分布式架构的支持,...转载 2022-04-14 10:39:12 · 303 阅读 · 0 评论 -
012 Redis 的并发竞争问题是什么?如何解决这个问题(分布式锁)?了解 Redis 事务的 CAS 方案吗(WATCH)?
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》1、Redis 的并发竞争问题是什么?看到这个标题,有人可能会有疑问了,redis不是单线程的吗,怎么还会有并发竞争问题?其实是这样的,redis并发竞争是多个客户端并发写一个key,本来应该是先到的请求先写key,但可能由于网络环境差异,先发起的请求后到了,导致value最终被后发起的请求修改,最终数据错乱了。或者是多个客户端同时获取一个key,修改值后再写回去,只要原创 2022-04-11 10:18:17 · 2236 阅读 · 1 评论 -
011 如何保证缓存与数据库的双写一致性?先删缓存后更新数据库的数据不一致问题的处理
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》1、剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的一个请求。2、Cache Aside Pattern原创 2022-04-09 11:06:35 · 307 阅读 · 0 评论 -
010 如何保证缓存与数据库的双写一致性?双写的四种情况
为了解决高并发的流量问题,通常我们都会添加缓存这一层,来扛住大量的读请求。虽然缓存能够帮数据库分担大量的读请求,但是也伴随着一个问题就是缓存中的数据怎么跟数据库中的数据保持一致,又是一个新问题数据实时性等级这里我们需要保证缓存和数据库的数据一致性,也可以根据数据所要求的实时性等级去评估,并不是所有的数据我们都需要保证强一致性,这里根据数据要求实时性不同大致分为2个等级:强一致性数据,弱一致性数据强一致性数据:比如一些支付数据,金额数据,涉及到钱的数据对实时性要求就比较...转载 2022-04-08 17:35:21 · 796 阅读 · 0 评论 -
009 谈谈Redis的雪崩、穿透和击穿,以及出现这些情况后的应对方案
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》原创 2022-04-08 10:31:39 · 196 阅读 · 0 评论 -
008 Redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》1、RDB、AOF(Redis官网中关于持久化的解释)Redis persistence | RedisHow Redis writes data to disk (append-only files, snapshots, etc.)Persistence refers to the writing of data to durable storage, such as原创 2022-04-06 16:34:38 · 1072 阅读 · 0 评论 -
007 Redis内存淘汰机制,引出LRU算法问题,简述LRU在常用框架中的使用
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》1、之前整理过2篇关于LRU的博客024 Java实现LRU(Least recently used,最近最少使用)算法 之 LinkedHashMap022 LRU算法用在哪些地方,LRU算法如何实现2、Redis官网中关于LRU的描述Approximated LRU algorithmRedis LRU algorithm is not an exact原创 2022-04-06 09:57:14 · 2240 阅读 · 0 评论 -
006 Redis的过期策略有哪些?内存淘汰机制有哪些?
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》1、redis 过期策略是:定期删除+惰性删除所谓定期删除,指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。假设 redis 里放了 10w 个 key,都设置了过期时间,你每隔几百毫秒,就检查 10w 个 key,那 redis 基 本上就死了,cpu 负载会很高的,消耗在你的检查过期 key 上了。注意,原创 2022-04-02 18:00:08 · 117 阅读 · 0 评论 -
005 Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》1、Redis官网中介绍各种数据类型 官方地址:Redis data typesRedis is not a plain key-value store, it is actually a data structures server, supporting different kinds of values. What this means is that, while i.原创 2022-04-02 17:47:46 · 789 阅读 · 0 评论 -
004 select、poll和epoll最简单的解释
从事服务端开发,少不了要接触网络编程。epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。epoll 很重要,但是 epoll 与 select 的区别是什么呢?epoll 高效的原因是什么?网上虽然也有不少讲解 epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。笔者于是决定编写此文,让缺乏专业背景知识的读者也能够明白 epoll 的原理。文章核心思想是:要让读者清晰明白原创 2022-04-02 13:48:39 · 318 阅读 · 0 评论 -
003 Redis 的线程模型是什么?为什么Redis单线程却能支撑高并发?
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》1、Redis的线程模型( Redis 的网络 IO 和键值对读写是由一个线程来完成)redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才 叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列 中,事件分派器根据 socket 上的事件类型来选择对应的原创 2022-04-02 10:25:27 · 1215 阅读 · 0 评论 -
002 Redis 和 memcached 有什么区别?
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》1、Redis 支持复杂的数据结构Redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更 复杂的结构和操作, redis 会是不错的选择。Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range q原创 2022-04-01 18:02:25 · 734 阅读 · 0 评论 -
001 为什么要用缓存?缓存使用不当会造成什么后果?
读读Redis的官网,学第一手的资料:Redid官方文档地址或者看看书《Redis 深度历险: 核心原理和应用实践》1、用缓存,主要有两个用途,高性能和高并发。1.1 高性能例如一个查询请求,到MySQL数据库中查询花了100ms。现在把数据扔缓存里,一个 key 对应一个 value,下次再有人查,别走 MySQL 耗费 100ms 了,直接从缓存里,通过一个 key 查出来一个 value,2ms 搞定。性能(速度)提升 50 倍。1.2 高并发首先,MySQL 单机支撑到 2原创 2022-04-01 17:23:48 · 611 阅读 · 0 评论 -
20190713 关于session串号问题的记录
公司开发了一个网站,A帐户在A电脑上登录 显示自己的信息B帐户在B电脑上登录 显示自己的信息过一会儿,A帐户刷新页面,出现了B帐户的用户基本信息跟踪发现,session串掉了。在log文件中可以查到sessionid是一样的。http://ju.outofmemory.cn/entry/30713https://www.iteye.com/problems/6765http...转载 2019-07-13 23:34:47 · 887 阅读 · 0 评论 -
cookie、session、sessionid 与jsessionid
cookie、session、sessionid 与jsessionid,要想明白他们之间的关系,下面来看个有趣的场景来帮你理解。 我们都知道银行,银行的收柜台每天要接待客户存款/取款业务,可以有几种方案: 凭借柜台职员的记忆,由收柜台职员来为每位顾客办理存款/取款业务,单凭职员的记忆力,要记到每位顾客的相貌,并迅速这个顾客当前的存款以及存取的次数,每次存取的金额是多少。----...转载 2019-07-12 10:25:36 · 169 阅读 · 0 评论 -
Tomcat7基于redis的session共享
一,项目需求因开发人员在登录后台时需要反复认证,tomcat反复切换,所以给运维组提出需求,解决session共享问题。二,解决方法环境:基于Centos6.8 Jdk 版本 java version "1.7.0_99" Tomcat版本号:Server number: 7.0.82.0 Redis版本号:...转载 2019-07-12 17:06:54 · 223 阅读 · 0 评论 -
Redis过期策略 =》LRU =》 手写LRU =》MySQL的Buffer Pool
重磅干货,第一时间送达你面试的时候遇见过LRU吗?LRU 算法,全称是Least Recently Used。翻译过来就是最近最少使用算法。这个算法的思想就是: 如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。所以,当指定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。听描述你也知道了,它是一种淘汰算法。这个算法也是面试的一个高频考点。有的面试官甚至要求手撸一个 LRU 算法出来。其实我觉得吧,遇到这种情况也不要慌,你就按照自己的思路写一个转载 2021-12-29 18:09:05 · 122 阅读 · 0 评论 -
Java 网络IO简介
之前自学以及在公司里的一年多都没有接触过网络IO相关的知识,六月份二面的时候有位面试官问了我一些有关网络IO的相关问题,结果一脸懵逼。趁着现在有空,正好入门一下。正式开始之前,需要铺垫一些基本概念,以免接下来看到一脸懵逼。我们都知道,在操作系统中,CPU负责执行指令,这些指令有些来自应用程序,有些是底层系统的自调用。有些指令是非常危险的,如清除内存,网络连接等等,如果错误调用的话有可能导致系统崩溃。因而CPU将指令分为特权指令和非特权指令,对于某些特定的指令,只需要操作系统及其相关模块进行调用。因而转载 2021-12-21 14:54:35 · 400 阅读 · 0 评论 -
Redis主从复制以及主从复制原理
概述在现有企业中80%公司大部分使用的是redis单机服务,在实际的场景当中单一节点的redis容易面临风险。面临问题1. 机器故障。我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另外一台服务器并且要保证数据是同步的。而数据是最重要的,如果你不在乎,基本上也就不会使用 Redis 了。2. 容量瓶颈。当我们有需求需要扩容 Redis 内存时,从 16G 的内存升到 64G,单机肯定是满足不了。当然,你可以重新买个 128G 的新机器。解决办法要实现分布式数据库的更大转载 2021-09-07 17:58:41 · 115 阅读 · 0 评论 -
漫画描述——史上最通俗易懂的B+树和B-树详解!
PS:本文并非原创,纯属抱有学习收藏心态加以转载,如有冒犯敬请告之。一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m4.所有的叶子结点都位于同一层。5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。一个m阶的B+树具有如下几个特征:1.有原创 2021-02-22 13:46:48 · 484 阅读 · 0 评论 -
Redis分布式锁的正确实现方式_我们日活百万的项目就用了错误的实现方式
原文地址:https://www.cnblogs.com/linjiqin/p/8003838.html前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现转载 2021-02-05 09:53:44 · 96 阅读 · 0 评论 -
请问当用户反馈网站访问慢,你会如何处理?
请问当用户反馈网站访问慢,你会如何处理?有哪些方面的因素会导致网站网站访问慢?1、服务器出口带宽不够用本身服务器购买的出口带宽比较小。一旦并发量大的话,就会造成分给每个用户的出口带宽就小,访问速度自然就会慢。跨运营商网络导致带宽缩减。例如,公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通,这也可能导致带宽的缩减。2、服务器负载过大,导致响应不过来可以从两个方面入手分析:分析系统负载,使用 w 命令或者 uptime 命令查看系统负载。如果负载很高,则使用 top..原创 2021-01-19 14:48:04 · 953 阅读 · 0 评论 -
redis-分布式锁
分布式锁地址:http://researchlab.github.io/2018/01/18/redis-02-distributed-lock/redis专题地址:http://researchlab.github.io/categories/redis%E4%B8%93%E9%A2%98/page/2/分布式应用进行逻辑处理时经常会遇到并发问题。比如一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问题,因为读取和转载 2021-01-12 14:01:59 · 74 阅读 · 0 评论 -
数据库的四种隔离级别
小故事版本解释:https://www.cnblogs.com/myseries/p/10748912.html转载 2020-12-30 17:43:59 · 69 阅读 · 0 评论 -
memcache的分布式配置
public static class MemcacheHelper{private static MemcachedClient mc;static MemcacheHelper(){String[] serverlist = { "127.0.0.1:11213", "127.0.0.1:11214" };SockIOPool pool = SockIOPool.GetInstance("MyMemcached");pool.SetServers(serverlist);//各服务器之转载 2020-11-24 16:08:45 · 93 阅读 · 0 评论 -
windows系统上安装redis , 并做简单的操作
百度redis官网 , 下载页没有找到windows版本的redis2 . windows版本的redis的github地址 https://github.com/microsoftarchive/redis/releases(1)点击下载Redis-x64-3.2.100.zip(2)解压后(3) 双击 redis-server.exe启动server(服务) , 双击 redis-cli.exe启动cli(客户端)在resis-cli.exe窗口敲简单redis命令原创 2020-06-03 10:08:40 · 126 阅读 · 0 评论 -
数据库表一键生成Java Bean文件
前言:最近写web Service接口项目。每个数据库表字段都100+,几十张表。瞬间指瘫了。于是想起曾经的javaBean生成工具,上车吧!需要环境:JDK1.7 (亲测可行),支持mysql,Oracle,SqlServer,支持java c# 。下载地址:64位:点击下载 32位:点击下载使用示例:1.配置数据源:2.配置生成字段:表名为:生成...转载 2019-12-31 13:33:25 · 396 阅读 · 0 评论 -
如何高效地向Redis插入大量的数据
原文地址:https://www.cnblogs.com/ivictor/p/5446503.html最近有个哥们在群里问,有一个日志,里面存的是IP地址(一行一个),如何将这些IP快速导入到Redis中。我刚开始的建议是Shell+redis客户端。今天,查看Redis官档,发现文档的首页部分(http://www.redis.io/documentation)有一个专门的主题是讲述...转载 2019-03-26 15:11:45 · 293 阅读 · 0 评论 -
Redis技能—1.Redis分布式锁(正确版注意)
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确...转载 2018-11-30 17:33:50 · 98 阅读 · 0 评论 -
Centos7下安装redis-4.0.6
一、安装redis第一步:下载redis安装包wget http://download.redis.io/releases/redis-4.0.6.tar.gz[root@iZwz991stxdwj560bfmadtZ local]# wget http://download.redis.io/releases/redis-4.0.6.tar.gz--2017-12-13 12...转载 2019-03-22 10:06:12 · 129 阅读 · 0 评论 -
Redis批量写入
原文地址:https://blog.csdn.net/u014078154/article/details/79316430最近测试redis性能,需要批量向Redis插入1千万条以上的数据,就简单进行了研究,大概有以下几种方法:一:java程序调用,简单的for循环,通过Jedis的方法,直接插入, 至于速度,不用看,不用试,根本不行,就不给实现了。二...转载 2019-03-26 14:51:35 · 945 阅读 · 0 评论 -
封装redis连接池 ( Jedis )
https://blog.csdn.net/qq_36898043/article/details/82155202一、由来java操作redis,常用的是jedis,,作为一个缓存数据库,或者称之为nosql类型的数据库,,redis也有连接对象,那么,问题来了,我们通过连接对象访问redis的时候,不应该不断的创建和销毁连接对象,此时,就用到了redis连接池技术,jedis中...转载 2018-12-18 11:00:06 · 173 阅读 · 0 评论 -
查看、分析memcache使用状态
先连接上memcache,假设memcache服务在本机上,并监听在默认端口11211上。telnet连接到memcached:telnet 127.0.0.1 11211我们自己通过跳板机登陆到memcache服务器telnet 192.168.164.137 11211访问量上升,数据库压力大,怎么办?好办法是在中间挡一层缓存!这个缓存要求高效,不能比数据库慢,否则服务质...转载 2018-10-31 10:04:21 · 1257 阅读 · 0 评论 -
Could not connect to Redis at 127.0.0.1:6379:Connection refused
修改了redis的配置文件redis.conf的绑定ip,如下图随后执行./redis-cli报Could not connect to Redis at 127.0.0.1:6379:Connection refused的错误,如下图解决办法如下:redis-cli -h {host} -p {port} {command}直接得到命令的返回结果或者执行 ./redi...原创 2019-04-12 14:29:38 · 8343 阅读 · 0 评论 -
plsql查询中文乱码问题(显示问号)
问题:打开plsql,执行sql语句,中文显示乱码:解决方案:1)输入sql语句select userenv('language') from dual查看数据库字符集2)输入sql语句select * from V$NLS_PARAMETERS查看本地字符集,查看第一行和第九行是否对应3)查看下环境变量的设置,查看是否有变量NLS_LANG,没有则...转载 2019-06-10 15:08:14 · 723 阅读 · 0 评论 -
接口的幂等性设计
前言感觉最近脑子老是比较迷糊,记不住东西。因此,正好马上周末了,可以抽空写点东西,记录下最近的一些学习心得。概念幂等广义上一般指以相同参数调用同一个接口多次,对系统内部产生的影响是一致的。比如说进行支付时,如果一次扣款操作因为某种原因调用了两次,那么理论上应该只生效一次,否则就会出现一定的风险;如何做幂等回到刚才的场景,幂等是需要保证在对同一请求进行多次...转载 2019-07-04 08:32:43 · 125 阅读 · 0 评论 -
Tomcat7+Redis 实现session共享配置以及jar包
1.先决条件: 安装了redis,并且进行了相关配置(IP、端口、外部机器能访问等),报错session实体要实现序列化Serialization2.在Tomcat中lib下加入依赖包:jedis.jar、common-pool2.2.jar、tomcat-redis-session-manager-1.2-tomcat-7.jar3. tomcat-redis-session-manag...转载 2019-07-12 09:55:38 · 937 阅读 · 0 评论 -
触发器与存储过程的区别
原文地址:https://blog.csdn.net/u013034286/article/details/46968725看完牛腩前18集,就发现用存储过程和触发器真的很棒棒哒!那么到底什么时候用存储过程,什么时候用触发器呢?【我的理解】SQL语句: 一句SQL语句就是一个命令,而一般来说一个命令只执行一件事。存储过程: 里面可以有多个SQL语句,用事物可以保证多句语句必须都执行成...转载 2018-11-26 10:15:34 · 333 阅读 · 0 评论