服务器 命令请求的执行过程 使用SET KEY VALUE命令为例, 客户端和服务器共需要执行以下操作: 客户端向服务器发送命令请求SET KEY VALUE 服务器接收并处理客户端发来的命令请求SET KEY VALUE, 在数据库中进行设置操作, 并产生命令回复OK 服务器将命令回复OK发送给客户端 客户端接收服务器返回的命令回复OK, 并将这个回复打印给用户观看 发送命令请求 Redis服务器的命令去请求来自Redis客户端, 当用户在客户端中键入一个命令请求时, 客户端将会将这个命令请求转换成协议格式, 然…

3月 30, 2021 0条评论 504点热度 0人点赞 阅读全文

对象编码 哈希对象的编码可以是ziplist或者hashtable ziplist ziplist编码的哈希对象使用压缩列表作为实现, 每当有新的键值对要加入到哈希对象时, 程序会先将保存了键的压缩列表节点推入到压缩列表表尾, 然后再将保存了值的压缩列表节点推入到压缩列表表尾. 优点 保存了同一键值对的两个节点总是紧挨在一起, 保存键的节点在前, 保存值的节点在后. 先添加到哈希对象中的键值对会被放在压缩列表的表头方向, 后来添加到哈希对象中的键值对会被放在压缩列表的表尾方向. hashtable hashtabl…

3月 29, 2021 0条评论 428点热度 1人点赞 阅读全文

集合对象的编码可以是intset或者hashtable. intset编码的集合 intset编码集合对象使用整数集合作为底层实现, 集合对象包含的所有元素都被保存在整数集合里面. hashtable hashtable编码的集合对象使用字典作为底层实现, 字典的每个键都是一个字符串对象, 每个字符串对象包含了一个集合元素。而字典的值全部被设置为NULL 编码转换 集合对象保存的所有元素都是整数值 集合对象保存的元素数量不超过512个 不能满足这两个条件的集合对象需要使用hashtable编码 编码转换条件设置 s…

3月 29, 2021 0条评论 490点热度 0人点赞 阅读全文

列表对象编码 列表对象可以是ziplist或者linkedlist两种。 编码转换条件 列表对象保存的所有字符串元素的长度都小于64字节 列表对象保存的元素数量小于512个 不能满足这两个条件的列表对象需要使用linkedlist编码 编码转换条件修改 list-max-ziplist-value: 用于修改能够保存的最大的字节数 list-max-ziplist-entries: 用于修改压缩列表在达到最大节点时, 就将压缩列表转换为链表 # Similarly to hashes, small lists ar…

3月 29, 2021 0条评论 422点热度 1人点赞 阅读全文

有序集合对象 编码 有序集合的编码可以是ziplist或者skiplist ziplist ziplist编码的压缩列表对象使用压缩列表作为底层实现, 每个集合元素使用两个紧挨在一起的压缩列表节点来保存, 第一个节点保存元素的成员(member), 第二个元素保存元素的分值(score) 压缩列表内的集合元素按分值从小到大进行排序, 分值较小的元素被放置在靠近表头的方向, 而分值较大的元素则被放置在靠近表尾的方向 有序集合压缩列表实现方式 skiplist编码的有集合对象使用zset结构作为底层实现, 一个zset…

3月 28, 2021 0条评论 406点热度 0人点赞 阅读全文

redis字符串对象

3月 28, 2021 0条评论 457点热度 0人点赞 阅读全文

RDB持久化 Redis数据状态: 保存在Redis数据库中的数据被称作数据状态。   RDB文件的创建与载入 有两个Redis命令可以用于生成RDB文件, 一个是SAVE, 另一个是BGSAVE   RDB文件创建 SAVE命令会阻塞Redis服务器进程, 知道RDB文件创建完毕为止, 在服务器进程阻塞期间, 服务器不能处理任何命令请求. BGSAVE派生出一个子进程, 然后由子进程创建RDB, 服务器进程继续处理命令请求.   RDB文件载入 RDB文件的载入工作时在服务器启动时自…

3月 24, 2021 0条评论 492点热度 1人点赞 阅读全文

-Xms 代表着最小堆, 在jvm启动时就会分配到该大小的区域 -Xmx 代表最大堆, 在jvm最小堆不能满足需求时, 对jvm内存进行扩展, 直到最大堆的内存大小 -Xmn 代表新生代区域的大小 -XX:SurvivorRatio 代表着Eden区域与Survivor区域的比例. 一般Survivor的区域有两个。例如:-XX:SurvivorRatio = 3;则Survivor的大小 = 1/5 * 新生代大小 -XX:NewSize 设置新生代大小 -XX:NewRatio 设置新生代与老年代比值。例如:-…

3月 21, 2021 0条评论 512点热度 0人点赞 阅读全文

jvm的常用命令 jps jps相关参数 实例 jstack 分析CPU使用100%的原因 jmap jinfo jstat javap jps 显示当前java的进程以及相关参数 jps相关参数 -q 只显示pid, 不显示class名称, jar名称以及main方法的参数 -m 输出传递给main的参数 -l 输出应用程序main, class的完整package名称或者应用程序jar包的完成路径名 -v 输出传递给jvm的参数 备注: 也可以使用ps aux | grep 项目名称查看对应的pid信息 实例 …

3月 21, 2021 1条评论 801点热度 1人点赞 阅读全文

与RDB持久化通过保存数据库中的键值对来记录数据库状态不同, AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。 AOF持久化的实现 AOF持久化功能的实现可以分为命令追加(append),文件写入,文件同步(sync)三个步骤 命令追加 当AOF持久化功能处于打开状态时, 服务器在执行完一个写命令之后,会以协议格式将被执行的写命令追加到服务器状态的aof_buf缓冲区的末尾:  struct redisServer {   // AOF缓冲区   sds aof_buf; } AOF文件的写…

3月 21, 2021 1条评论 739点热度 0人点赞 阅读全文

什么是redis持久化 持久化就是把内存的数据写到磁盘中去, 防止服务宕机了内存数据丢失 redis 数据持久化方式 RDB rdb是Redis DataBase缩写 功能核心函数rdbSave和rdbLoad两个函数 rdbSave是将对象保存到RDB文件中 rdbLoad是将RDB文件中的数据加载到内存之中 AOF Aof 是Append-only file缩写 每当执行服务器任务或函数时, flushAppendOnlyFile函数会被调用, 这个函数执行以下两个工作 WRITE: 根据条件, 将aof_bu…

3月 21, 2021 0条评论 462点热度 1人点赞 阅读全文
12