摘要: 前缀索引和索引选择性 有时候需要索引很长的字符,这会让索引变得大且慢。一个策略是模拟哈希索引。 通常可以索引开始的部分字符,这样可以大大解约索引空间,提高索引效率。但这样会降低索引的选择性。 索引的选择性:不重复的索引值(也成为基数)和数据表的记录总数比值。索引的选择性越高则查询效率越高,因为选择性 阅读全文
posted @ 2021-10-02 00:13 csgopher 阅读(319) 评论(0) 推荐(0)
摘要: 小结 字符串内部编码:int embstr raw,用途:缓存。 哈希内部编码:压缩ziplist hashtable 列表内部编码:压缩ziplist linkedlist,用途:消息队列。 集合内部编码:intset hashtable,用途:标签,计算用户共同感兴趣的标签。sinter use 阅读全文
posted @ 2021-09-30 23:34 csgopher 阅读(246) 评论(0) 推荐(0)
摘要: Redis集群通过分片(sharding)进行数据共享,并提供复制和故障转移功能。 节点 一个Redis集群由多个node组成,连接各节点的命令格式如下: CLUSTER MEET 127.0.0.1:7000> CLUSTER MEET 127.0.0.1 7001 槽指派 Redis集群通过分片 阅读全文
posted @ 2021-09-30 21:56 csgopher 阅读(307) 评论(0) 推荐(0)
摘要: 哨兵是Redis的高可用解决方案:由多个哨兵组成的系统监视主从服务器,可以将下线的主服务器属下的某个从服 务器升级为新的主服务器,继续保障运行。 启动并初始化Sentinel redis-sentinel /path/to/your/sentinel.conf Sentinel本质是一个Redis服 阅读全文
posted @ 2021-09-29 23:27 csgopher 阅读(208) 评论(0) 推荐(0)
摘要: 在Redis中,用户可以通过执行SALVEOF命令,让一个服务器去复制另一个服务器。 127.0.0.1:12345> SLAVEOF 127.0.0.1 6379 OK 6379的奴隶是12345。 旧版复制功能实现 Redis的复制功能分为同步(sync)和命令传播两个操作: 同步:将从服务器更 阅读全文
posted @ 2021-09-29 22:48 csgopher 阅读(100) 评论(0) 推荐(0)
摘要: RDB持久化 RDB持久化既可以手动,也可以配置,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中。 RDB文件是一个经过压缩的二进制文件,通过文件可以还原生成RDB文件时的数据库状态。 RDB文件的创建与载入 有2个命令可以生成RDB文件:SAVE和BGSAVE。SAVE命令会阻塞主进程 阅读全文
posted @ 2021-09-28 21:01 csgopher 阅读(65) 评论(0) 推荐(0)
摘要: HashMap 存储结构 HashMap是数组+链表+红黑树(1.8)实现的。 (1)Node[] table,即哈希桶数组。Node是内部类,实现了Map.Entry接口,本质是键值对。 下图链表中的Node节点 (2)Node[] table初始化长度为16,负载因子是0.75,threshol 阅读全文
posted @ 2021-09-27 21:22 csgopher 阅读(258) 评论(0) 推荐(0)
摘要: 本地事务 事务特性:ACID,其中C一致性是目的,AID是手段。 实现隔离性 写锁:数据加了写锁,其他事务不能写也不能读。 读锁:数据加了读锁,其他事务不能加写锁可以加读锁,可以允许自己升级为写锁。 范围锁:对某个范围加写锁,范围内数据不能写入。 隔离级别 以锁为手段来实现隔离性才是数据库表现出不同 阅读全文
posted @ 2021-09-26 22:07 csgopher 阅读(588) 评论(1) 推荐(0)