![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 84
不能吃辣的JAVA程序猿
且行且珍惜
展开
-
redis集群的优缺点,5种使用方式优缺点介绍
Redis Cluster优点:数据依照slot存储分布在多个节点,节点间数据共享,能够动态调整数据分布;可扩展性;无中心架构;高可用性;能够降低运维成本,有效提高系统的可用性以及扩展性。Redis Cluster缺点:数据通过异步复制,不保证数据的强一致性;Client 实现复杂;节点会因为某些原因发生阻塞被判断下线;多个业务使用同一套集群的时候,不能够依据统计区分冷热数据,资源隔离性较差,非常容易出现互相影响;Slave 在集群中充当“冷备”,不能缓解读压力;Key批量操作限制;原创 2022-10-08 18:20:24 · 3004 阅读 · 0 评论 -
Redis底层数据结构之hash
hash在Redis中的底层实现有两种,一种是zipList,这种是当hash结构的V值较小的时候使用的编码方式。这个已经在Redis底层数据结构之list这篇文章中介绍过了。这篇文章主要讲解一下另外一种实现方式,字典dict,这是当hash结构的V值较大时采用的编码方式。这里又要开始鞭尸C语言了,字典dict作为一种常用的数据结构,C语言内部并不具备,因而Redis的开发人员自己设计和开发了Redis中的dict结构,其定义如下:各属性含义如下:由上面可以看出,dict本质上是对哈希表dictht的一个转载 2022-10-08 17:15:43 · 1281 阅读 · 0 评论 -
Redis底层数据结构之 zset
zset是Redis提供的一个非常特别的数据结构,常用作排行榜等功能。zset在Redis中两种不同的实现,分别是zipList和skipList。zipList前面我们已经介绍过了,这里就不再介绍了。具体使用哪种结构进行存储,规则如下:zipList:需要满足以下两个条件[score,value]键值对数量少于128个;每个元素的长度小于64字节;skipList:不满足以上两个条件时使用跳表、组合了hash和skipListhash用来存储value到score的映射,这样就可以在O(1)时间内转载 2022-10-08 16:57:54 · 9180 阅读 · 0 评论 -
Redis底层数据结构之list
Redis中另一个常用的数据结构就是list,其底层有linkedList、zipList和quickList三种存储方式。与Java中的LinkedList类似,Redis中的linkedList也是一个双向链表,由一个个节点组成的。Redis中借助C语言实现的链表节点结构如下所示:pre指向前一个节点,next指针指向后一个节点,value保存着当前节点对应的数据对象。listNode的示意图如下所示:链表的结构如下:各属性含义如下,后三个了解一下即可。链表的结构如下所示:Redis的zipL转载 2022-10-08 16:46:35 · 2313 阅读 · 0 评论 -
Redis之String数据结构底层原理
如果使用raw编码,则每次开辟空间都会留一些空间,如果数据成都变大了,则内存也会继续变大,进而浪费空间。对于embstr类型,它将RedisObject对象头和SDS对象在内存中地址是连在一起的,但对于raw类型,二者在内存地址不是连续的。4:SDS 是Redis自己构建的一种简单动态字符串的抽象类型,并将 SDS 作为 Redis 的默认字符串表示。对于不同的对象,Redis会使用不同的类型来存储。在功能中,除非是必要的情况,除了上述的这几个需求,尽量不要使用string类型,底层会浪费大量的内存空间。转载 2022-10-08 14:14:47 · 672 阅读 · 0 评论 -
Redis 常见使用场景
三种缓存用户信息优缺点比较:原生字符串类型:每个属性一个键优点:简单直观,每个属性都支持更新操作。缺点:占用过多的键,内存占用量较大,同时用户信息内聚性比较差,所以此种方案一般不会在生产环境使用。序列化字符串类型:将用户信息序列化后用一个键保存。优点:简化编程,如果合理的使用序列化可以提高内存的使用效率。缺点:序列化和反序列化有一定的开销,同时每次更新属性都需要把全部数据取出进行反序列化,更新后再序列化到Redis中。哈希类型:每个用户属性使用一对field-value,但是只用一个键保存。原创 2022-10-08 10:59:04 · 390 阅读 · 0 评论 -
限流方案学习汇总(业务层+技术层+分布式)
限流方案学习汇总(业务层+技术层+分布式)原创 2022-09-27 16:29:01 · 340 阅读 · 0 评论 -
布隆过滤器
第一反应说到布隆过滤器第一反应应该是:1、一定没有 or 可能有2、hashCode3、效率与成本(时间与空间)原创 2022-09-06 10:22:01 · 148 阅读 · 0 评论 -
缓存穿透、缓存雪崩、缓存击穿(一张表清晰明了)
缓存穿透(cache penetration)是用户访问的数据既不在缓存当中,也不在数据库中。出于容错的考虑,如果从底层数据库查询不到数据,则不写入缓存。这就导致每次请求都会到底层数据库进行查询,缓存也失去了意义。当高并发或有人利用不存在的Key频繁攻击时,数据库的压力骤增,甚至崩溃,这就是缓存穿透问题。原创 2022-09-05 17:33:57 · 1105 阅读 · 1 评论 -
分布式锁Redis及Redisson
互斥:确保只能有一个线程获取锁(integer) 1 # 现在成功获取锁了(integer) 0 # 重复获取锁,发现获取失败手动释放:删除key(integer) 1 # 删除key,就是手动释放锁(empty array) # 发现key,已经没有了超时释放:在获取锁时加入过期时间。可以避免服务宕机,然后死锁OK尝试获取锁:是因为采用的是非阻塞式。获取锁只是获取一次。要么成功要么失败。/*** 尝试获取锁。翻译 2022-09-05 13:53:42 · 1334 阅读 · 1 评论 -
Redis中的批量操作Pipeline
单机使用正常和pipeline的简单对比public class PiplineTest { private static int count = 10000; public static void main(String[] args){ useNormal(); usePipeline(); } public static void usePipeline(){ ShardedJedis jedis = getS原创 2021-02-20 11:51:04 · 356 阅读 · 0 评论 -
redis灵异事件
先粘贴下异常信息: redis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set ar...原创 2018-12-07 23:38:52 · 147 阅读 · 0 评论 -
解决单机版,windows下redis关闭时报错 redis (error) ERR Errors trying to SHUTDOWN. Check logs.
原因:找不到指定的路径解决方式:找到redis的安装目录,找到conf文件,如图 打开文件搜索dir可以找到如图:把该部分修改为: /home/distance/redis_dbfiles/再次测试OK期间可能会因为电脑权限导致无法修改,可拷贝出来一份进行修改,再覆盖进去就可以了。也可以修改文件的权限为完全控制。...原创 2018-12-12 08:39:51 · 734 阅读 · 0 评论 -
redis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is configured to save RDB snapshots
异常原因 强制停止redis快照导致,redis运行用户没有权限写rdb文件或者磁盘空间满了解决办法,执行该命令 config set stop-writes-on-bgsave-error no原创 2018-12-12 09:57:36 · 2349 阅读 · 0 评论 -
解决springboot项目启动时redis报错:ERR Client sent AUTH, but no password is set 的问题
首先看下我springboot配置redis的部分如图:显然上面配置了redis的启动密码为123456,本地redis版本为3.0.1 在redis.windows.conf文件中requirepass内容也修改了密码为123456,这里说下,在去除requirepass前面的#号时一定注意还有一个空格要去除,不然会报错:Invalid argument during startup...原创 2019-06-05 11:45:55 · 5084 阅读 · 0 评论 -
springboot高版本与低版本的redis配置
springboot1版本配置:redis: host: localhost port: 6379 password: 123456 timeout: 10000 pool: max-active: 10 min-idle: 3 max-idle: 5springboot2版本配置:redis: host: localhost p...原创 2019-06-06 15:10:46 · 2056 阅读 · 0 评论 -
绝对没问题,springboot2集成redis3.2.100 包含序列问题说明
预期:1、正常存储所有内容string list map set object2、正常读取所有内容3、可设置所有存储类型的有效时间4、本地redis命令可有效查看Key值5、代码获取数据可以有效转化内容环境:springboot2 (有破解版,不知道破解方法联系我)redis3.2.100 (如果没有可以找我要或者提醒未上传资源,或者自己下载)JDK1.8...原创 2019-06-14 11:47:19 · 538 阅读 · 0 评论 -
绝对没问题,springboot2集成redis3.2.100 完善配置并指定缓存时间包含原来的序列化
redisi配置以及序列化可参考我之前写的博客,这里主要完善下配置信息,可以自定义缓存时间。配置代码:import com.newcapec.common.cache.factory.ICache;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.Ca...原创 2019-06-17 09:46:20 · 233 阅读 · 0 评论 -
redis你意想不到的坑-集合存取后的操作与获取时间超时java.lang.UnsupportedOperationException与Redis command timed out
环境、springboot2redis3.2.0序列化方式使用JDK的序列化方式(不明白的可以看看我之前的博客)应用场景:集合均为ArryList<T>1、存入集合A与集合B2、获取集合A与集合B3、获取后的集合A调用addAll存入集合B,将两个集合合并报错信息:java.lang.UnsupportedOperationException经验...原创 2019-06-25 13:47:37 · 2459 阅读 · 0 评论 -
redis异常
错误日志Servlet.service() for servlet [springMVC] in context with path [/maocai] threw exception [Request processing failed; nested exception is org.springframework.data.redis.RedisConnectionFailureExce...原创 2018-12-07 23:33:32 · 2941 阅读 · 0 评论