1
2
3
private static final MultipartEntityBuilder BUILDER = MultipartEntityBuilder.create().addPart(BIZ, BIZ_VALUE).addPart(CATEGORY, CATEGORY_VALUE);

private static final ThreadLocal<MultipartEntityBuilder> BUILDER_THREAD_LOCAL = ThreadLocal.withInitial(() -> BUILDER);

这样是不行的,作为initial的对象不能是static.
改成下面这样就好了:

阅读全文 »

概述

Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能

阅读全文 »

概览

Sentinel(哨兵)是Redis高可用性解决方案:
由一个或多个哨兵实例组成的哨兵系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器

阅读全文 »

概述

RDB持久化通过保存数据库中的键值对来记录数据库状态
AOF通过Redis服务器所执行的写命令来记录数据库状态

阅读全文 »

概述

RDB持久化既可以手动执行,也可以根据服务器配置选项进行定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中;RDB持久化功能所生成的RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件生成时的数据库状态

阅读全文 »

数据库键空间

Redis是一个键值对数据库服务器,服务器中的每个数据库都由一个redisDb结构表示,其中,redisDb结构的dict字典保存了数据库中的所有键值对,我们将这个字典成为键空间(key space)

阅读全文 »

概述

压缩列表(ziplist)是列表键和哈希键的底层实现之一
当一个列表只包含少量列表项,并且每个列表项要么是小整数值,要么就是长度比较短的字符串,那么Redis会使用压缩列表来做列表键的底层实现
例如:

阅读全文 »

概述

整数集合(intset)是集合键的底层实现之一,当一个集合质保函整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现

阅读全文 »

跳跃表通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的.
跳跃表支持平均O(logN),最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点

在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡术要来的更为简单,所以有不少程序都使用跳跃表来代替平衡树

阅读全文 »