
redis
山鬼谣me
我的这一生
展开
-
Redis学习笔记:主从模式、Sentinel、集群
环境window10前言《Redis 设计与实现》读书笔记;主从复制。。。Sentinel 哨兵模式sentinel是Redis的高可用解决方案:由一个或多个sentinel实例组成的sentinel系统,可以监视任意多个主服务器以及主服务器下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。sentinel本质上其实就是一个运行在特殊模式下的Redis服务器。特殊在哪里呢?原创 2020-12-23 23:12:14 · 186 阅读 · 0 评论 -
分布式锁:红锁redLock和联锁multiLock源码分析
环境Java11前言一开始只是想研究红锁源码,但是发现红锁源码是基于联锁源码的,所以联锁的情况一起分析了下;Redis获取分布式锁,其实就是向N个Redis实例中使用SETNX来对该resource设置键值。为了方便分析代码,假设集群里三个Redis实例;起始调用代码:long leaseTime = 3L;lock.lock(leaseTime, TimeUnit.SECONDS);RedissonRedLock redLock = new RedissonRedLock(lock);原创 2020-11-18 17:55:47 · 5571 阅读 · 1 评论 -
Redis学习笔记:字典rehash底层实现与Java区别
环境Java:11前言今天在看Redis的字典rehash时,发现其与Java不一样;并由此产生了如下思考:① Redis既然采用的是渐进式rehash,那么Java的HashMap采用的是什么?② 集中式重新rehash是非常耗性能的,hashMap中rehash的优化点在哪里?扩容以前下面这段代码我没有重点看,只知道这是在扩容;今天重点看了下,不过红黑树没看:final Node<K,V>[] resize() { Node<K,V>[] oldTab原创 2020-11-01 18:33:25 · 846 阅读 · 5 评论 -
Redis学习笔记:window10安装Redis
环境window10Redis:5.9前言linux上安装Redis,网上有一大把,window上安装Redis虽然也有,但是不多;关键基本都停留在Redis3版本,因为微软只维护到了Redis版本3;后来一些老外弄了一个比较新的版本Redis5,结合网上的教程,自己也做下笔记;下载下载地址:Redis 5.0.9 for Windows其实也可以在gitlab上进行搜索:redis-windows找到星最多的就是了;安装下载的zip包,其实就是解压版的,对其进行解压后,放到自己原创 2020-10-29 22:37:15 · 578 阅读 · 0 评论 -
springboot学习笔记:设置Redis缓存时间
环境MacBook ProIntellij IDEA前言在使用注解@Cacheable时,不能设置缓存时间,使用起来不是很爽,稍微研究了一下;配置因为其不支持设置缓存时间,所以得通过RedisCacheManager的方式来设置/** * @author yutao * @since 2020/3/31 7:03 下午 */@EnableCaching@EnableCon...原创 2020-04-01 19:02:36 · 2039 阅读 · 0 评论 -
java连接虚拟机中的redis服务
环境java:1.7 redis: 4.0.1 64 bit jedis: 2.6代码package jedis;import redis.clients.jedis.Jedis;public class JedisTest { public static void main(String[] args) { Jedis jedis = new Jedis("192.16原创 2017-09-22 17:44:22 · 2742 阅读 · 4 评论 -
jedis 基本使用
环境java:1.7 jedis: 2.9基本使用先去中央仓库把jedisjar包下载下来。在多线程环境中使用jedis你不应该在多线程中使用同一个jedis实例,因为你将会遇到奇怪的问题。 然后有时创建大量的jedis实例也是不对的,因为其意味着大量的socket连接,其也会导致产生奇怪的问题。单个jedis实例是非线程安全的。为了避免这些问题,你应该使用JedisPool,其是线程安全的网络原创 2017-09-25 10:22:27 · 620 阅读 · 0 评论 -
jedis高级使用
环境jdk:1.7 jedis:2.6.0事务在jedis为了使用事务,你需要把操作包裹在事务块中,这和管道非常类似:jedis.watch (key1, key2, ...);Transaction t = jedis.multi();t.set("foo", "bar");t.exec();注意:当你有返回值的方法时,你需要这样做:Transaction t = jedis.multi(翻译 2017-09-26 17:27:01 · 1259 阅读 · 0 评论