redis 笔记
1、redis 是一个键值对存储数据的内存数据库;存储的数据基本单元可以看作是 字节流;值支持 字符串(Strings)、列表(Lists)、集合(Sets)、哈希(Hashes)、有序集合(Sorted Sets);
字符串:redis自身能区分 字节串、整数、浮点数;
- 为数值型数据提供自增、自减,加减amount的命令,
- 为字节串,提供追加字节append、获取子串getrange、设置子串、操作bit位等命令
列表:为列表提供左右添加数据rpush、lpush,左右弹出数据rpop、lpop,去偏移量offest的元素lindex,去一个范围的各元素lrange,裁剪列表ltrim等;
集合:
2、redis 存储构成 先分 页;在页里面 分块(防止内存碎片化);块是最小单元;需要根据存储数据的特点设置合适的块大小(如果数据都比较小,应该将块设置小一些);以保证内存充分利用;
3、当数据量很大,单个redis实例不能满足需时,需要多个redis 实例,对数据进行分片,存取数据需要先找到数据的分片,在分片(redis实例)上存取数据;
- 此时存在 两次哈希的过程;第一个是定位到某个redis实例;第二次是在具体redis实例上取值;
- 第一次哈希 用到了 一致性哈希算法;以取余哈希为例,基数应该适当大于redis实例个数,让实例均匀分散地分布在基数上的各点;
- 如果取余的基数为实例个数,那么某个实例故障,导致节点数量变化,哈希的映射关系将出现 大波动;
- 一致性哈希算法 保证 取余的基数不变(基数一般远大于实例数);节点数量变化时 哈希值不会变,这就保证了大部分节点不会改变映射关系;具体信息可百度。
浙公网安备 33010602011771号