作者回复: 比如,你按ID存了一个数据到Redis里,但又希望能按别的维度来查询时,一种方式就是自己维护二级索引,而RedisRepository可以帮你做这个二级索引,让你根据自己需要来查询。
作者回复: 1. 官方文档里也解释了Lettuce使用连接池的场景:使用Redis Transactions的时候。我们自己在产线使用时目前还是以Jedis为主,没有用Lettuce。Lettuce是线程安全的,而Redis又是但线程的,所以一般情况下,只是简单的get/set,多连接并不会有明显的性能提升。 2. 超时是要设置的,不然Redis内存里的数据只多不减,不要指望所有人都会在用完后删除不要的KEY,然后就容易Redis的数据越来越多,而且还不知道去掉哪些。你提到的计数器,如果是我,会考虑设置有效期,然后延期。
作者回复: 恩,基本就是这样
作者回复: 设置最大的重定向次数的,RedisCluster里,你把请求发到了某个节点上,它发现这个KEY不在自己这里,就会告诉你重定向到另一个节点上去找。
作者回复: 我们一般的用法是把Redis当缓存来用,既然是缓存就要有个失效时间,不然缓存的内容越来越多,内存相对磁盘而言还是很昂贵的。Redis里的数据一旦没了,我们要求有手段能够补偿回来。其实,显示情况也可能是这样的,Redis扛不住压力挂了,背后的DB更扛不住…… 至于你说的一定要在Redis里存个永久的值,没人拦着你,可以不设置有效时间。 全局ID,我们一般用分布式序列号生成器来做,不依赖中心节点。
作者回复: 完全自己用Jedis或者Lettuce客户端什么都做,也就是你说的最灵活的。但如果你就想缓存一些方法的执行结果,Spring的缓存抽象都帮你写好了,直接用就行,这时你就不用自己再操心怎么写了。
作者回复: 这是一个便捷的辅助模板类,用来方便你和Redis交互,其中封装了一些序列化和反序列化逻辑,如果你放Redis里的类型不多,可以配一下,如果多的话,我建议你还是自己做JSON序列化和反序列化操作,直接通过StringRedisTemplate来做操作。
作者回复: actuator的beans里有具体的Bean是哪里定义的信息,你可以看看
作者回复: 你想要说的是做分布式Session吧,我们在Web章节里提到了这个话题,可以先跳过去看看。
作者回复: Coffee是用来存RDMBS的,用了@Entity,而CoffeeCache是用来存Redis的,用了@RedisHash。