
[Redis]
我能在河边钓一整天的鱼
欢迎来到我的酒馆
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
redis集群哈希一致性算法和哈希槽
先说普通哈希算法:让数据id的哈希值和redis集群的个数取模,得到的是几这个数据就存放在哪个redis服务器上普通哈希算法存在数据迁移的问题,即当集群数量增加或减少,原来数据的key与Redis序号对应的集群关系会改变,可能第一次数据1落在0号Redis上,第二次数据1就落在了2号机器上。这样就会出现”缓存穿透“一致性哈希算法一致性哈希算法首先弄了一个虚拟环,环上有n个节点,比如2的32次方个节点。这个环仅仅是逻辑上的一个算法。它先用redis机器序号+redis的ip生成唯一的一...原创 2020-09-10 10:21:35 · 874 阅读 · 0 评论 -
比较Redis和Memcached
存储方式上Memcached会把数据全部存到内存中,断电后会挂掉,数据不能超过内存大小。Redis部分数据存在硬盘中,采用RDB和AOF两种持久化方式,保证了数据的持久化。数据支持类型上Memcache对数据类型的支持简单,只支持key-value。而Redis支持5+3种底层模型不同Redis直接构建了自己的VM机制Value大小不同Redis可达1G,Memcache只有1M...原创 2020-08-24 09:15:15 · 181 阅读 · 0 评论 -
Redis的淘汰策略与过期策略
目录淘汰策略过期策略比较淘汰策略与过期策略淘汰策略最多使用的是volatile-lru:从过期时间中选择最近最少未使用的数据淘汰以及:volitile-ttl:过期时间最短的数据将会被淘汰过期策略定时过期 惰性过期(只有当一个key被访问时,才能判断这个key是否过期) 定期过期(定期扫描,扫描到过期的key再丢弃)比较淘汰策略与过期策略1.内存淘汰策略和内存过期策略互不影响2.内存淘汰用来处理内...原创 2020-08-24 08:59:39 · 275 阅读 · 0 评论 -
浅谈Redis如何实现一致性
目录一分为二Redis和MySQL的一致性Redis如何保证主从数据的一致性一分为二Redis的一致性分两个方面,一是Redis和MySQL的一致性;另一个是Redis集群主从的一致性Redis和MySQL的一致性好比你有两盒益达,一盒放公司,另一盒放家。每次吃一颗,但你一定每次都依次让家和公司的糖递减。这样当然会造成数据不一致的现象。解决方法是我们规定:redis的数据来源于mysql,想更新数据要先更mysql再更新到redis中...原创 2020-08-23 21:14:43 · 1177 阅读 · 0 评论 -
Redisson实现分布式锁
目录Redisson工作原理图Redisson工作原理1.lua脚本2.加锁3.锁互斥机制4.watch dog自动延期机制5.可重入锁机制6.释放锁机制代码实现步骤Redisson工作原理图Redisson工作原理1.lua脚本现在某个客户端要加锁,且该客户端面对是上图中的Redis Cluster集群,他会首先根据hash节点选择一台机器,紧接着会发送一段lua脚本(胶水语言)到redis上。为什么用...原创 2020-08-10 17:02:22 · 442 阅读 · 0 评论 -
分布式锁的实现思路
目录秒杀案例分布式锁应具备的条件三种方案的分布式锁基于数据库实现分布式锁基于缓存实现分布式锁基于Zookeeper实现分布式锁三种方案比较秒杀案例我们来看一个秒杀小案例,每有一个用户下单库存就-1,在单环境部署情况下,我们添加了synchronized锁,锁住扣除库存代码块,这样不会出现多线程并发导致库存数量出现重复或负数问题。但分布式部署,synchronized就无法解决此问题了,多个项目就有多个synchronized锁,锁之间会覆盖冲...原创 2020-08-10 16:19:13 · 731 阅读 · 0 评论 -
Redis的缓存穿透&击穿&雪崩
目录使用Redis架构的高可用问题缓存穿透(Redis中查不到)缓存击穿(量太大,缓存过期)缓存雪崩使用Redis架构的高可用问题Redis缓存的使用不可避免的会造成数据一致性问题,从严格意义来讲,这个问题没有解决办法。一旦出故障,丢多少ms多少s的数据都算丢。如果对数据一致性要求非常之高,那么久不能使用缓存。下图展示的是请求的流程缓存穿透(Redis中查不到)缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没...原创 2020-05-30 10:51:39 · 254 阅读 · 0 评论 -
Redis的哨兵模式
目录层层链路集群哨兵模式什么是哨兵模式哨兵模式的作用多哨兵模式配置哨兵模式sentinel.conf文件所有参数哨兵模式的优缺点层层链路集群紧接上篇https://blog.youkuaiyun.com/Delicious_Life/article/details/106436476在讲哨兵模式之前,我们先来看一下层层链路的Redis集群。上一篇的集群是绝对的一主两从。如果我把架构改成这样呢?80是79的从机,80同时也是81的主机。此时三台R...原创 2020-05-30 09:41:14 · 396 阅读 · 0 评论 -
Redis的主从复制
目录概念什么是主从复制主从复制的作用环境配置一主两从测试主从复制的原理概念什么是主从复制主从复制是指将一台Redis服务器的数据,复制到其他Redis的服务器,前者称为主节点,后者称为从节点。数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。默认情况下,每台Redis都是主节点。一个主节点可以有多个从节点,但一个从节点只能有一个主节点。单台Redis最大使用内存不应该超过20G主从复制的作用1...原创 2020-05-30 08:35:25 · 294 阅读 · 0 评论 -
Redis的事务操作
Redis中的事务Redis事务的本质是一组命令的集合!一个事务中的所有命令都会被序列化。在事务执行的过程中会按照顺序执行!Redis的事务没有隔离级别的概念,所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行! ExecRedis的中的事务不保证原子性Redis的事务执行流程开启事务(multi) 命令入队(...) 执行事务(exec)正常执行redis中事务操作================================...原创 2020-05-28 08:56:17 · 365 阅读 · 0 评论 -
Redis持久化之AOF
目录AOF(Append Only File)AOF的工作原理AOF的启动AOF的修复AOF重写的规则AOF的优缺点总结Redis的持久化AOF(Append Only File)AOF的工作原理以日志的形式记录每一个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据。也就是说,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作...原创 2020-05-29 13:54:20 · 331 阅读 · 0 评论 -
Redis持久化之RDB
目录为什么要持久化RDB(Redis DataBase)RDB的工作原理RDB的配置RDB的触发机制查看RDB文件的位置如何恢复RDB文件RDB持久化的优缺点为什么要持久化Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,一旦服务器进程退出,服务器中的数据库状态也会消失。RDB(Redis DataBase)RDB的工作原理在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复...原创 2020-05-29 13:06:39 · 360 阅读 · 0 评论 -
Redis.conf文件详解
目录单位包含网络通用设置快照安全限制客户端的连接AOF配置单位单位对大小写是不敏感的。包含类似于java中的import,可以在一个redis配置文件中引入多个redis配置文件网络bind 127.0.0.1 # 绑定的ipprotected-mode yes # 保护模式port 6379 # 端口设置通用设置daemonize yes # 以守护进...原创 2020-05-28 16:55:48 · 222 阅读 · 1 评论 -
Springboot整合Redis
目录比较Jedis和Lettuce基本整合RedisTemplate的使用自定义RedisTemplate企业开发的RedisUtil比较Jedis和LettuceSpringboot整合时使用springboot-data-redis。在spinrbgoot2.x以后,原来使用的jedis数据源被替换成了lettuce。jedis:采用直连,多个线程操作是不安全的,想要避免需要使用jedis pool。更像BIO模式 lettuce:底层采用netty进...原创 2020-05-28 11:27:53 · 324 阅读 · 0 评论 -
使用Jedis操作Redis
目录什么是Jedis测试Jedis连接Redis使用Jedis操作Key使用Jedis操作String使用Jedis操作List使用Jedis操作Set使用Jedis操作Hash使用Jedis操作事务什么是JedisJedis是Redis官方推荐的java连接开发工具!使用Java操作Redis中间件!测试Jedis连接Redis1.引入jar包 <dependencies> <d...原创 2020-05-28 08:56:34 · 360 阅读 · 0 评论 -
Redis的发布订阅
目录Redis的发布订阅是什么?Redis发布订阅相关命令使用Redis客户端测试发布订阅Redis订阅发布原理Redis发布订阅的使用场景Redis的发布订阅是什么?Redis发布订阅(pub/sub)是一种消息通信模式:发送者发送消息,订阅者接收消息。微信、微博、关注系统都有应用。订阅发布图这种图是抢消息,只有一个客户端能抢到我们当然也可以让每个客户端都接受到消息Redis发布订阅相关命令使...原创 2020-05-29 14:31:39 · 267 阅读 · 0 评论 -
Redis实现乐观锁
目录回忆乐观锁和悲观锁使用watch实现乐观锁使用unwatch对解除乐观锁回忆乐观锁和悲观锁悲观锁:认为任何时候都会出问题,无论做什么都要加锁!乐观锁:认为什么时候都不会出问题,所以不会上锁!更新数据的时候去判断一下,在此期间是否有人修改过数据。更新时会先获取version然后比较version。如果有人修改,最终的数据会以那个人修改的为准,本次再去执行未完成的乐观锁操作将失败~使用watch实现乐观锁单线程下,先执行乐观锁,再执行事务...原创 2020-05-27 20:55:01 · 185 阅读 · 0 评论 -
Redis的三种特殊数据类型
Geospatial 地理位置原创 2020-05-26 17:24:00 · 331 阅读 · 0 评论 -
Redis的五大基本数据类型
目录Redis的五种数据结构数据结构之间的简单比较list和set hash和zsetRedis的五种数据结构数据结构之间的简单比较list和setList中存的字符串可以相同也可以不同,但是Set中存储的字符串必须是各不相同的。hash和zset他们存储的都是键值对。hash可以看做文档...原创 2019-12-04 14:23:29 · 337 阅读 · 1 评论 -
什么是Redis
目录什么是RedisRedis能干什么?Redis的特性什么是RedisRedis(Remote Dictionary Server)即远程字典服务。是一个开源的使用ANSI C语言编写,支持网络,可基于内存也可持久化的日志型、Key-Value数据库,并提供多种语言的APIredis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave主从同步Redis能干什么?1.内存存储、持久化...原创 2020-05-26 08:39:00 · 225 阅读 · 0 评论 -
什么是NoSQL
NoSQL的概念NoSQL = Not Only SQL,泛指非关系型数据库。NoSQL的特点1.方便扩展(数据之间没有关系)2.大数据量高性能(Redis一秒能写8万次,读取11万次)。它的缓存记录级是一种细粒度的缓存,性能很高。3.数据类型多样化(不需要事先设计数据库,随取随用),存储方式有键值对存储,列存储,文档存储,图形数据库(社交关系)大数据时代的3V和3高海量(Volume)、多样(Variety)、实时(...原创 2020-05-26 08:25:31 · 237 阅读 · 0 评论 -
Redis的常用命令
1./etc/init.d/redis start ---启动redis服务端2.redis-cli ---连接redis客户端3.keys * ---查看所有的key4.EXISTS key值 ---判断当前key是否存储5.move key值 数据库编号 ---移动当前key到指定数据库6.set key值 value值 ----新建key、...原创 2020-05-26 10:56:59 · 158 阅读 · 0 评论 -
Redis-Benchmark压力测试工具
目录redis-benchmark可选参数测试redis-benchmark可选参数redis-benchmark是redis内置的一个压力测试工具,可以模拟 N 个客户端同时发出 M 个请求。测试时可输入如下参数测试测试:100个并发连接 100000请求,在redis目录下输入redis-benchmark -h localhost -p 6379 -c 100 -n 100000控制台会打印各种命令进行上述操作的日志我们...原创 2020-05-26 10:07:24 · 396 阅读 · 0 评论 -
CentOs7安装Redis4.0.9
目录1.下载压缩包2.编译并安装3.编辑配置文件4.设置Redis开机自启动启动测试新建数据结构通过Redis可视化工具连接1.下载压缩包我们首先通过xftp把Redis4.0.9的压缩包拖动到虚拟机的目录中在虚拟机中切换到这个目录中cd /usr/local/leyou然后我们提升对这个压缩包的增删改权限chmo...原创 2020-02-22 10:34:19 · 474 阅读 · 2 评论 -
Springboot中使用拦截器拦截请求查询Redis
需求对于所有的Controller,我都想实现能走redis的查询就不走数据库,大致思路是请求在走到接口之前,咱们搞一个拦截器,符合get请求的拦截,非get请求的放行。新建拦截器类package cn.itcast.haoke.dubbo.api.interceptor;import com.fasterxml.jackson.data...原创 2020-03-15 00:06:53 · 2188 阅读 · 0 评论 -
Springboot项目如何向Redis集群中写入数据
目录关于Redis的集群搭建1.在项目中导入redis依赖2.添加redis连接信息3.新建Redis配置类4.注册Redis连接工厂5.新建测试类关于Redis的集群搭建大家可以参考下如何在ubuntu上通过docker搭建redis集群https://blog.youkuaiyun.com/Delicious_Life/article/details/...原创 2020-03-13 16:57:26 · 589 阅读 · 0 评论 -
基于Docker搭建Redis集群(5.0.2)
目录1.给挂载文件夹授权2.拉取镜像3.我们构建三个Redis容器4.启动容器5.集群搭建1.给挂载文件夹授权通过docker安装redis后,redis生成的文件都在docker容器内,这样不方便外界访问。我们采取的办法是把redis在docker中的文件目录映射到虚拟机的文件目录中,一般我都映射在虚拟机的data文件夹下。但映射之前你需要先给da...原创 2020-03-13 15:24:53 · 561 阅读 · 0 评论 -
如何在springcloud项目中调用阿里短信功能(下)
目录为什么要引入redis1.引入依赖2.修改配置文件3.新增redis测试类4.引入工具类5.编写发送短信方法6.测试为什么要引入redis这篇我们从消费者的角度讲如何调用阿里短信服务。首先我们给用户发送的验证码需要存在一个地方进行核验,像这种价值密度低,持久性若的数据我们保持在redis中最为合适。1.引入依赖...原创 2020-02-22 13:13:42 · 555 阅读 · 1 评论