<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[快乐划水程序猿的专栏]]></title><description><![CDATA[记录技术的成长]]></description><link>https://blog.csdn.net/Alexia23</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Alexia23]]></copyright><item><title><![CDATA[redis哨兵系列1]]></title><link>https://blog.csdn.net/Alexia23/article/details/127930985</link><guid>https://blog.csdn.net/Alexia23/article/details/127930985</guid><author>Alexia23</author><pubDate>Fri, 18 Nov 2022 22:44:32 +0800</pubDate><description><![CDATA[redis哨兵知识]]></description><category></category></item><item><title><![CDATA[《go程序语言设计》引言]]></title><link>https://blog.csdn.net/Alexia23/article/details/127930955</link><guid>https://blog.csdn.net/Alexia23/article/details/127930955</guid><author>Alexia23</author><pubDate>Fri, 18 Nov 2022 22:42:06 +0800</pubDate><description><![CDATA[go学习笔记]]></description><category></category></item><item><title><![CDATA[redis集群系列四]]></title><link>https://blog.csdn.net/Alexia23/article/details/125550491</link><guid>https://blog.csdn.net/Alexia23/article/details/125550491</guid><author>Alexia23</author><pubDate>Thu, 30 Jun 2022 23:52:21 +0800</pubDate><description><![CDATA[redis集群运维tips]]></description><category></category></item><item><title><![CDATA[redis集群系列三]]></title><link>https://blog.csdn.net/Alexia23/article/details/125475031</link><guid>https://blog.csdn.net/Alexia23/article/details/125475031</guid><author>Alexia23</author><pubDate>Sun, 26 Jun 2022 21:57:15 +0800</pubDate><description><![CDATA[redis集群的故障转移及恢复]]></description><category></category></item><item><title><![CDATA[redis集群系列二]]></title><link>https://blog.csdn.net/Alexia23/article/details/125475008</link><guid>https://blog.csdn.net/Alexia23/article/details/125475008</guid><author>Alexia23</author><pubDate>Sun, 26 Jun 2022 21:56:02 +0800</pubDate><description><![CDATA[redis集群]]></description><category></category></item><item><title><![CDATA[redis集群系列一]]></title><link>https://blog.csdn.net/Alexia23/article/details/124772454</link><guid>https://blog.csdn.net/Alexia23/article/details/124772454</guid><author>Alexia23</author><pubDate>Sat, 14 May 2022 19:04:10 +0800</pubDate><description><![CDATA[redis集群
redis集群模式是分布式存储的一个case。
数据分布
分布式数据库要解决将一堆数据按照分区规则映射到不同节点上。常见的分区规则有哈希分区和顺序分区。




分区方式
特点
产品




哈希分区
离散度好;数据分布与业务无关
redis cluster、cassandra


顺序分区
离散度容易倾斜；数据分布与业务有关；可以顺序访问
HBase、Hypertable


哈希分区
redis集群使用的是哈希分区，常见的哈希分区有以下几种：

节点取余

hash(key)/N， 但是]]></description><category></category></item><item><title><![CDATA[LRU go实现]]></title><link>https://blog.csdn.net/Alexia23/article/details/124596736</link><guid>https://blog.csdn.net/Alexia23/article/details/124596736</guid><author>Alexia23</author><pubDate>Thu, 05 May 2022 20:36:22 +0800</pubDate><description><![CDATA[思路

用列表实现，有head和tail

为什么需要tail？
为什么node节点需要key？


当get值的时候，用map查找

找不到返回-1
能找到将node调整到表头


当put值的时候

如果key已经存在则需要更新val，同时将node调整到表头
如果key不存在则新建node，将其调整到表头



代码
package main

import "fmt"

type LRUCache struct {
    cap int
    num int
    head *LRUMem
 ]]></description><category></category></item><item><title><![CDATA[operator-sdk升级]]></title><link>https://blog.csdn.net/Alexia23/article/details/124393327</link><guid>https://blog.csdn.net/Alexia23/article/details/124393327</guid><author>Alexia23</author><pubDate>Sun, 24 Apr 2022 23:14:42 +0800</pubDate><description><![CDATA[operator sdk v0.x和v1.x的区别
operator sdk和kubebuilder整合后（以kubebuilder为主），operator sdk发布了v1.x版本，operator sdk的项目layout、scaffold、dependency、 usage、code等发生了变化

底层相似：under the hood using controller-runtime、controller-tools to adding a manager, api scheme and creat]]></description><category></category></item><item><title><![CDATA[redis内存篇]]></title><link>https://blog.csdn.net/Alexia23/article/details/124393125</link><guid>https://blog.csdn.net/Alexia23/article/details/124393125</guid><author>Alexia23</author><pubDate>Sun, 24 Apr 2022 22:06:30 +0800</pubDate><description><![CDATA[Redis归属
随着计算硬件的价格越来越便宜，人们对性能的要求越来越高，很多用户会根据自己的业务场景选择读写速度很快的内存数据库，呀比如大名鼎鼎的redis数据库，其属于kv型的NOSQL数据库。
这里小编可以简单介绍下数据库。数据库可以简单分为关系型数据库和非关系型数据库。
关系型数据库最典型的数据结构是表，由二维表及其之间的联系所组成的一个数据组织，常见的Oracle、Mysql、PostgreSQL、MariaDB、SQLite、SQL Server等，读写速度依赖于磁盘I/O。
非关系型数据库严格上]]></description><category></category></item><item><title><![CDATA[redis命令系列一]]></title><link>https://blog.csdn.net/Alexia23/article/details/122659168</link><guid>https://blog.csdn.net/Alexia23/article/details/122659168</guid><author>Alexia23</author><pubDate>Mon, 24 Jan 2022 00:03:05 +0800</pubDate><description><![CDATA[redis常用命令]]></description><category></category></item><item><title><![CDATA[《分析模式》第0-2章 责任]]></title><link>https://blog.csdn.net/Alexia23/article/details/119748261</link><guid>https://blog.csdn.net/Alexia23/article/details/119748261</guid><author>Alexia23</author><pubDate>Tue, 17 Aug 2021 09:17:38 +0800</pubDate><description><![CDATA[时隔多年终于更新，学习总结分享知识总是快乐的❤
0.0 译者序
作者
Matrin Fowler 软件设计大师，曾在thoughtworks（全球性软件及咨询公司）任职过
设计模式
真实问题映射为分析模型，分析模型映射为设计模型，再映射为代码，编译构建，形成系统
练习方式

用熟悉的语言抠一遍例子
模型图画成UML图，实现完整的模块图

有点意思的类比

分析模型分为模型的建立（type）和模型的实现（class）

1.1 概念模型

理解和简化问题的模型
针对问题设置概念模型
提供功能和开发维护成本之前]]></description><category></category></item><item><title><![CDATA[故宫学系列之紫禁城：从皇宫到博物院]]></title><link>https://blog.csdn.net/Alexia23/article/details/114497300</link><guid>https://blog.csdn.net/Alexia23/article/details/114497300</guid><author>Alexia23</author><pubDate>Sun, 07 Mar 2021 20:48:59 +0800</pubDate><description><![CDATA[来自大学《故宫学》，课堂笔记哇，习惯的戳进来瞅瞅～

慈禧太后：

48年在政坛，当下负面评价比较多（康有为上书，里面有戊戌变法等，可能康有为编故事，还需要继续求证），大家以为戊戌变法之后，光绪被囚禁了，实际上光绪还在管政，慈禧太后也在摄政，但是有摄政范围，更多对自己定位是家主
	光绪的皇后（隆裕皇后），光绪殡天了，成为了皇太后
	1912年2月12号，慈禧太后主动交出了政权。中国历史上的改朝换代，都是通过武装手段。清朝到中华民国的过渡，有辛亥革命（武昌起义），革命军的力量比较弱，没法通过武装手段打败清王朝]]></description><category></category></item><item><title><![CDATA[《redis设计与实现》第三部分 （第16章 哨兵）]]></title><link>https://blog.csdn.net/Alexia23/article/details/109346056</link><guid>https://blog.csdn.net/Alexia23/article/details/109346056</guid><author>Alexia23</author><pubDate>Wed, 28 Oct 2020 22:04:28 +0800</pubDate><description><![CDATA[第三部分 多机数据库的实现
16.0 第16章 Sentinel
哨兵系统可以监视所有主服务器下，以及主服务器下的所有从服务器。如果被监视的主服务器下线，哨兵系统可以讲下线的从服务器升级成新的主服务器
16.1 启动并初始化Sentinel
16.1.1 初始化服务器

sentinel本质是运行一个特殊模式下的Redis服务器，并不使用数据库，所以初始化sentinel不需要载入RDB和AOF
可能会用到的主要功能

复制命令SLAVEOF：Sentinel内部使用，客户端不可以使用
发布与订阅命令：SU]]></description><category></category></item><item><title><![CDATA[《redis设计与实现》第三部分 （第15章 复制）]]></title><link>https://blog.csdn.net/Alexia23/article/details/109311938</link><guid>https://blog.csdn.net/Alexia23/article/details/109311938</guid><author>Alexia23</author><pubDate>Tue, 27 Oct 2020 15:23:28 +0800</pubDate><description><![CDATA[第三部分 多机数据库的实现
15.0 第15章 复制

用户可以通过执行slaveof选项，让一个服务器去复制另一个服务器，被复制的服务器为主服务器，对主服务器进行复制的服务器称之为从服务器。主从服务器的数据库保存相同的数据，概念上称“数据库状态一致”
服务器127.0.0.1:12345成为127.0.0.1:6379的从服务器，之后在6379主服务器设置键值，在12345服务器上也可以获取该键值。如果在主服务器上删除了键值，主从服务器最后也会删除键值

// for example
127.0.0.1:]]></description><category></category></item><item><title><![CDATA[《redis设计与实现》第四部分 （第24章 监视器）]]></title><link>https://blog.csdn.net/Alexia23/article/details/109296989</link><guid>https://blog.csdn.net/Alexia23/article/details/109296989</guid><author>Alexia23</author><pubDate>Mon, 26 Oct 2020 19:43:27 +0800</pubDate><description><![CDATA[24.0 监视器

通过客户端执行MONITOR，客户端可以把自己变成一个监视器，实时地接收并打印出服务器当前处理的命令请求信息
流程

客户端向服务器发送一条命令请求，服务器处理这条命令请求，还会将这个命令请求信息发送给所有的监视器



24.1 成为监视器

某个客户端向服务器发送MONITOR命令，这个客户端的REDIS_MONITOR标志会被打开，客户端会被加入到链表的表尾

//code0 server.c
void monitorCommand(client *c) {
    /* igno]]></description><category></category></item><item><title><![CDATA[《redis设计与实现》第四部分 （第23章 慢查询日志）]]></title><link>https://blog.csdn.net/Alexia23/article/details/109296976</link><guid>https://blog.csdn.net/Alexia23/article/details/109296976</guid><author>Alexia23</author><pubDate>Mon, 26 Oct 2020 19:42:44 +0800</pubDate><description><![CDATA[23.0 慢查询日志
主要的功能：记录执行时间超过给定时长的命令请求，可以用这个功能产生的日志来监视和优化查询速度

两个选项：时间和最多保存的条目

slowlog-log-slower-than 执行时间超过多少微秒的命令记录到日志
slowlog-max-len指定服务器最多保存多少条查询日志（先进先出，如果日志条目满了，最早的一条会被删除）


example one

127.0.0.1:6379&gt; config set slowlog-max-len 5
OK
127.0.0.1:6379]]></description><category></category></item><item><title><![CDATA[《redis设计与实现》第四部分 （第22章 二进制位数组）]]></title><link>https://blog.csdn.net/Alexia23/article/details/109280981</link><guid>https://blog.csdn.net/Alexia23/article/details/109280981</guid><author>Alexia23</author><pubDate>Sun, 25 Oct 2020 23:25:17 +0800</pubDate><description><![CDATA[感兴趣的是variable-precision SWAR算法，因为看书进度问题没研究透彻，未完待研究！
22.0 二进制位数组
redis提供了四个命令处理二进制数位组：SETBIT、GETBIT、BITCOUNT、BITOP四个命令处理二进制位数组

SETBIT命令为位数组指定偏移量上的二进制位设置值，位数组的偏移量从0开始计数，而二进制位的值可能是0或者1

SETBIT bit 0 1
SETBIT bit 3 1


GETBIT获取位数组指定偏移量伤的二进制位

GETBIT bit 0


B]]></description><category></category></item><item><title><![CDATA[《redis设计与实现》第四部分 （第21章 排序）]]></title><link>https://blog.csdn.net/Alexia23/article/details/109251360</link><guid>https://blog.csdn.net/Alexia23/article/details/109251360</guid><author>Alexia23</author><pubDate>Fri, 23 Oct 2020 23:00:45 +0800</pubDate><description><![CDATA[本章节主要介绍SORT命令的实现原理，包括ASC、DESC、ALPHA、LIMIT、STORE、BY、GET在内的所有SORT命令选项的实现原理
21.1 SORT 

cmpobj: 排序带有BY选项的字符串值时使用
比如要排序numbers

创建等长的数组；数组每一项都是redisSortObject结构
将数组numbers的每一项转换成double类型的浮点数存储在score中；
根据score排序；
最后返回排好序的列表（redisSortObject结构中的obj变量返回给客户端）



//]]></description><category></category></item><item><title><![CDATA[《redis设计与实现》第四部分 （第20章 Lua脚本）]]></title><link>https://blog.csdn.net/Alexia23/article/details/109249713</link><guid>https://blog.csdn.net/Alexia23/article/details/109249713</guid><author>Alexia23</author><pubDate>Fri, 23 Oct 2020 20:55:25 +0800</pubDate><description><![CDATA[20 Lua脚本
Lua是一种轻量小巧的脚本语言，用标准C语言编写并以源代码形式开放，设计的目的是为了嵌入应用程序中，为应用程序提供灵活的扩展和定制功能。

EVAL命令可以直接对输入的脚本进行求值
EVALSHA命令则可以根据脚本的SHA1校验和来对脚本进行求值，这个命令要求校验和对应的脚本至少被EVAL执行过一次

20.1 Redis服务器初始化Lua环境
创建并修改Lus环境的整个过程：

创建一个基础的Lua环境
载入多个函数库到Lua环境中，Lua可以使用函数库进行数据操作
创建全局表格redi]]></description><category></category></item><item><title><![CDATA[《redis设计与实现》第四部分 （第19章 事务）]]></title><link>https://blog.csdn.net/Alexia23/article/details/109240216</link><guid>https://blog.csdn.net/Alexia23/article/details/109240216</guid><author>Alexia23</author><pubDate>Fri, 23 Oct 2020 12:40:26 +0800</pubDate><description><![CDATA[19 事务

Redis通过MULTI、EXEC、WATCH等命令来实现事务功能。
基本概念：事务提供了一种将多个命令请求打包，然后一次性按顺序执行多个命令的机制，在事务执行期间，服务器不会中断事务而改去执行其他客户端的命令请求，它会将事务中的所有命令都执行完毕，然后再去处理其他客户端的命令请求。
执行过程：事务首先以MULTI命令为开始，接着将多个命令放入事务当中，最后由EXEC命令将事务提交给服务器执行

19.1 事务的实现

经历三个阶段：事务开始、命令入队、事务执行

19.1.1 事务开始

M]]></description><category></category></item></channel></rss>