要实现一个允许多个用户读取的高效缓存,但只允许一个用户写,你会怎样去实现它?

回答·13
最热
最新
  • 如果允许一定的数据不一致,可以添加多级缓存。 写请求就更新真实的数据,通过线程定时同步最新数据到多级缓存,用户只读多级缓存
  • 参考 copyonwritelist 实现
  • 这个挺适合用双队列实现的,一个队列加锁写,一个队列无锁读取,写完后的队列复制一份,替换读取队列引用即可
  • 读写锁,读共享,写独占
  • 写操作进行加锁,关于锁本地可以使用 cas,分布式推荐 redis 和 zookeeper
  • 队列加线程吃..........
  • 先说明,自己是菜鸡水平,说的不对也不要打脸。。 Java 的并发包中有一种可重入式读写锁,R**Readwritelock(单词没背下来),表示两个锁,一个是读操作的锁,一个是写操作的锁,读操作的称为共享锁,写操作的是排它锁
  • 使用 redis.setnx 实现一个不过期缓存,拿到锁的用户才会去写。其他用户为读者
  • 可以参考 eureka 的多级缓存
  • 写的时候,抢锁呗,redis 锁