Redis
文章平均质量分 81
qq_27502511
这个作者很懒,什么都没留下…
展开
-
Docker 集成 redis,并在nacos进行配置时需要注意点
nacos使用配置中心,启动项目控制台报错:[NACOS HTTP-GET] The maximum number of tolerable server reconnection errors has been reached。由于Redisson在解析配置时,无法解析“!<org.redisson.codec.JsonJacksonCodec> {}”导致的,解决方式在config: 后添加“ |”# 900s内至少一次写操作则执行bgsave进行RDB持久化。原创 2024-04-08 18:15:16 · 1047 阅读 · 0 评论 -
Redis 读写分离 使用redisTemplate执行lua脚本时,报错处理
READONLY You can‘t write against a read only replica 解决策略原创 2023-07-14 17:06:22 · 2171 阅读 · 0 评论 -
Redis慢查询分析
就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来。可以看到每个慢查询日志有4个属性组成,分别是慢查询日志的标识id、发生时间戳、命令耗时、执行命令和参数。如果要Redis将配置持久化到本地配置文件,需要执行config rewrite命令。slowlog-log-slowerthan原创 2023-06-26 15:42:53 · 454 阅读 · 0 评论 -
Redis持久化
Redis持久化Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题。RDBRDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。触发机制手动触发分别对应save和bgsave命令:save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。运行save命令对应的Redis日志如下:* DB saved on diskbgsave命令:Re原创 2023-06-01 10:22:32 · 671 阅读 · 0 评论 -
Redis数据库双写不一致问题
缓存+数据库读写模式设计过程请求读数据,先读缓存,缓存没有则读数据库。更新数据库数据,在删除缓存。再次读取数据时候,在计算缓存数据(用缓存在算缓存(lazy))。上述过程,如果在删除缓存的时候失败,会导致当前缓存的是旧数据(与数据库不一致)。过程修改1读数据,先读缓存,缓存没有则读数据库。先删除缓存,然后在更新数据库数据。再次读取数据时候,在计算缓存数据。上述过程,在产生读写并发时,会出现:请求A正在跟新数据,处于缓存删除了且数据库没有更新阶段,此时有另外一个读请求B,请原创 2020-10-17 18:25:07 · 306 阅读 · 0 评论 -
redis并发竞争问题以及解决方案
问题:并发竞争问题:系统A、系统B、系统C依次申请求改数据,假设A先获取到锁,B和C会等待A释放锁。当A修改完数据版本V1,B和C会竞争锁,假设C先获取锁把数据修改成了V3版本,之后B会获取锁把数据修改成了V2版本,事实上系统应该给出V3版本的数据。解决:在处理数据的时候,带入一个时间戳(从redis服务中获取,保证服务器时间一致)作为版本判断标志。过程如下:假设:A操作10:00:00执行;B操作10:00:01执行;C操作10:00:02执行。此时,A操作完,key的value版本为V原创 2020-10-17 18:21:16 · 632 阅读 · 0 评论 -
一般如何面对缓存雪崩以及穿透
设计思路:雪崩事前,事后,事后处理事前:实现高可用,redis cluster或者replaction+Sentinel实现高高可用,java内部添加部分ehcache缓存。事中:限流&降级,小部分通过数据库访问(数据库实际最大QPS承受量),大部分请求降级,一般是友好提示,请重试之类的。事后:redis缓存数据恢复。...原创 2020-10-17 16:26:02 · 103 阅读 · 0 评论 -
Redis缓存设计
缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日常应用的开发至关重要。原创 2020-08-17 10:48:46 · 45 阅读 · 0 评论 -
redis哨兵
哨兵Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的。基本概念Redis的许多概念都有不同的名词解释。Redis Sentinel是Redis的高可用实现方案,在实际的生产环境中,对提高整个系统的高可用性是非常有帮助的。安装和部署部署拓扑结构3个Sentinel节点、1个主节点、2个从节点组成一个RedisSentinel。部署Redis数据节点略部署Sent原创 2020-07-13 15:39:38 · 99 阅读 · 0 评论 -
Redis理解内存
redis 内存模型、相关设置、回收策略、对象存储结构以及其优化原创 2020-10-16 15:03:17 · 196 阅读 · 0 评论 -
Redis阻塞
Redis阻塞Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成的。内在原因包括:不合理地使用API或数据结构、CPU饱和、持久化阻塞等。外在原因包括:CPU竞争、内存交换、网络问题等。发现阻塞当Redis阻塞时,线上应用服务应该最先感知到,这时应用方会收到大量Redis超时异常,比如Jedis客户端会抛出JedisConnectionException异常。常见的做法是在应用方加入异常统计并通过邮件/短信/微信报警,以便及时发现通知问题。由于redis是分布式,采用用应用原创 2020-07-07 14:35:02 · 43 阅读 · 0 评论 -
Redis复制
redis复制在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。配置配置复制的方式有以下三种:1)在配置文件中加入slaveof{masterHost}{masterPort}随Redis启动生效。2)在redis-server启动命令后加入–slaveof{masterHost}{masterPort}生效。3)直接使用命令:slaveof{masterHost}{masterPort}生效。建立复制配置复制的方式有以下三种:在配原创 2020-07-06 14:43:04 · 254 阅读 · 0 评论 -
Redis客户端
Java客户端Jedis获取JedisJedis属于Java的第三方开发包,在Java中获取第三方开发包通常有两种方式:直接下载目标版本的Jedis-${version}.jar包加入到项目中。使用集成构建工具,例如maven、gradle等将Jedis目标版本的配置加入到项目中。通常在实际项目中使用第二种方式,但如果只是想测试一下Jedis,第一种方法也是可以的。<!-- https://mvnrepository.com/artifact/redis.clients/jedis原创 2020-07-01 15:42:37 · 361 阅读 · 0 评论 -
Redis发布与订阅
Redis发布与订阅Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel)发布消息,订阅该频道的每个客户端都可以收到该消息。Redis提供了若干命令支持该功能,在实际应用开发时,能够为此类问题提供实现方法。命令发布消息publish channel message127.0.0.1:6379> publish channel:sports "Tim won the championship"(integ原创 2020-07-01 13:31:39 · 132 阅读 · 0 评论 -
Reis Bitmaps
Bitmaps数据结构模型Bitmaps本身不是一种数据结构,实际上它就是字符串,但是它可以对字符串的位进行操作。Bitmaps单独提供了一套命令,所以在Redis中使用Bitmaps和使用字符串的方法不太相同。可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量。命令设置值setbit key offset value假设现在有20个用户,userid=0,5,11,15,19的用户对网站进行了访问,那么当前Bitmap原创 2020-07-01 11:08:38 · 42 阅读 · 0 评论 -
事务与Lua
事务与Lua为了保证多条命令组合的原子性,Redis提供了简单的事务功能以及集成Lua脚本来解决这个问题。事物redis支持简单的事物(数据不能自动回滚),将一组需要一起执行的命令放到multi和exec两个命令之间。multi 代表事物的开始exec 代表事物结束discard 停止事物127.0.0.1:6379> multiOK127.0.0.1:6379> sadd user:a:follow user:bQUEUED127.0.0.1:6379> s原创 2020-06-15 14:45:37 · 38 阅读 · 0 评论 -
Redis Shell
Redis Shell原创 2020-06-11 16:53:10 · 41 阅读 · 0 评论 -
RedisApi的理解和使用
Redis提供5种数据结构、对应数据的相关api以及对数据库层面的操作原创 2020-06-10 14:24:39 · 344 阅读 · 0 评论 -
初识Redis
初始RedisRedis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成。Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。Redis特性速度快官方给的数字读写原创 2020-06-03 15:20:00 · 171 阅读 · 0 评论