随笔分类 - Redis
摘要:关于spring-data-redis对redis事务的支持: 转载https://www.cnblogs.com/grey-wolf/p/10142937.html 测试用例: @Test void redisClusterTractionTest() { Object res=redisTemp
阅读全文
摘要:测试用例如下: @Test void redisPiplineTest(){ //测试redis-cluster pipline List<Object> res=redisTemplate.executePipelined(new SessionCallback<Integer>() { @Ove
阅读全文
摘要:测试用例: @Test void redisMgetTest(){ List<String> list=new ArrayList(); list.add("lcc"); list.add("ccl"); list.add("clc"); List<Object> res=redisTemplate
阅读全文
摘要:参考转载于:https://www.cnblogs.com/williamjie/p/11132211.html 点个赞 很全面 虚拟槽分区 虚拟槽分区是Redis Cluster采用的分区方式 预设虚拟槽,每个槽就相当于一个数字,有一定范围。每个槽映射一个数据子集,一般比节点数大 步骤: 1.把1
阅读全文
摘要:前几节将redis改为cluster mode之后,我们试着用来的配置方式来来接redis执行测试用例观察下: 配置如下: 测试用例: 执行结果: 检查一下spring的autoConfig: org.springframework.boot.autoconfigure.data.redis.Red
阅读全文
摘要:找一个新的干净的redis: ./redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 check一下 新分的node并没有自动分到slot。 ./redis-cli --cluster reshard 127.0.0.1:7006 再
阅读全文
摘要:上一节,我们用三台redis组成了cluster,现在我们停掉一台试试: 比较奇怪的是,在停掉其中一台服务器之前建立的链接仍然可以正常执行命令,当我们断开重连时,命令就都被拒绝了: 关联知识: 什么时候整个集群不可用(cluster_state:fail)? 如果集群任意master挂掉,且当前ma
阅读全文
摘要:因为key在cluster分布在不同的slot,可能在不同的机器,部分redis的客户端(比如jedis)是不支持pipeline的 针对jedis我们可能要先把这些key对应的slot手机起来,得到slot和具体连接的对应关系,再去每个连接的不同机器上操作pipeline,最后就是把一次popel
阅读全文
摘要:上次我们说到 在搞定homebrew rvm ruby之后 我们惊喜的发现 redis-trib.rb已经废弃 并迁移至redis-cli。 help内容如上。 ./redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:
阅读全文
摘要:想搭建一个redis cluster集群 需要用到ruby,装ruby又要装rvm, 之前玩docker的时候有装过homebrew,用homebrew装rvm的时候也很顺利。 然后rvm install 2.7 装ruby的时候,提示brew update失败,自己试了一下 brew update
阅读全文
摘要:线下项目: 线上项目: 一个是单机模式,一个是cluster。
阅读全文
摘要:转载: https://zhuanlan.zhihu.com/p/72378274 https://segmentfault.com/a/1190000016721700
阅读全文
摘要:转载: https://blog.csdn.net/qq32933432/article/details/108690254
阅读全文
摘要:单线程没有出现并发问题。 链接太多爆炸了 把连接改到50,没有问题 改回1000: emmm159,看来相当一部分拒绝了 并且8180~10000到头了 cpu爆炸了 观察下这种程度的并发用乐观锁 一个线程平均等待时间: 最惨的倒霉蛋花了203ms才完成,emmm不是很令人满意呀
阅读全文
摘要:redis cluster 数据结构 geo,heperloglog 3个非核心dict:阻塞dict,非阻塞dict,watch dict 3个bio线程,生产者消费者模式,主线程生产者: 1.lazy free延迟删除 复杂数据类型列表 集合 hash删除时不会直接从内存删除,而是丢给bio 2
阅读全文
摘要:1.读写方式 2.kv size 3.key数量 4.读写峰值,《=10w,10w-100wcache分层,本地+远程 5.命中率,容灾,主备,一致性hash 6.过期策略 7.平均缓存穿透加载时间 8.可运维性 9.安全性 1.常见问题: 1.大量key同时过期,同一批商品,热门动态批量导入。解决
阅读全文
摘要:sentinel本质上是一个运行在特殊模式下的redis服务器。 初始化sentinel时不回载入RDB文件或者AOF文件。
阅读全文
摘要:ok 我们从最基础的一步步来 加锁: 1.setNx没有expire,拿锁线程挂掉后,死锁 2.setNx然后exipre分两步做,setNx后redis宕机,或者线程挂掉,死锁 3.SETNX resource_name my_random_value PX 30000 加锁和过期原子操作 ok
阅读全文
摘要:空转时间:object idletime key 客户端信息:client list 对象类型:type key 底层结构:object encoding key 引用计数:object refcount key (redis只对包含整数值的字符串对象进行共享) 空转时间:object idleti
阅读全文
摘要:输入缓冲区: 客户端状态的输入缓冲区用于保存客户端发送的命令请求: typedef struct redisClient{ //... sds querybuf; //... }redisClient 输入缓冲区的大喜爱会根据输入内容动态的缩小或扩大,但最大为1GB,超过服务器会关闭这个客户端 输出
阅读全文