redis详解(redisson详解)
本篇文章给大家谈谈redis详解,以及redisson详解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、【Redis】基础数据结构-ziplist压缩列表
- 2、简单介绍redis以及ubuntu和windows下怎么安装redis和配置文件详解
- 3、redis.conf详解之tls-protocols
- 4、redis.conf详解之timeout
- 5、redis.conf详解之bind
【Redis】基础数据结构-ziplist压缩列表
压缩列表是列表和哈希表的底层实现之一:
Redis压缩列表是由连续的内存块组成的列表,主要包含以下内容:
列表在初始化的时候会计算需要分配的内存空间大小,然后进行内存分配,之后将内存空间的最后一个字节标记为列表结尾,内存空间的大小计算方式如下:
所以在创建之后,内存布局如下,此时压缩列表中还没有节点:
之后如果如果需要添加节点,会进行移动,为新节点的插入腾出空间,所以还是斗弯余占用的连续的空间:
压缩列表的节点可以存储字符串或者整数类型的值,为了节省内存,它采用了变长的编码方式,压缩列表的节点的结构定义如下:
prevrawlen :存储前一个节点的长度(占用的字节数),这样如果从后向前遍历,只需要当前节点的起始地址减去长度的偏移量prevrawlen就可以定位到上一个节点的位置,prevrawlen的长度可以是1字节或者5字节:
encoding :记录了节点的数据类型和内容的长度,因为压缩列表可以存储字符串或者整型,所以有以下两种情况:
存储内容为整数时,encoding占用1个字节,最高位是11开头,后六位代表整数值的长度,其中当编码为1111xxxx时情况比较特殊,
后四位的值在0001和1101之间, 此时直接代表数据的内容,是0到12之间的一个数字 ,并不是数据长度,因为它代表了数据内容,所以也不需要额外的空间存储数据内容。
zipStoreEntryEncoding
因为压缩列表中每个节点记录了前一个节点的长度:
假设有一种情况,一个压缩列表中,存储了多个长度是253字节的节点,因为节点的长度都在254字节以内,所以每个节点的prevrawlen只需要1个字节去存储长度的值:
此时在列表的头部需要新增加一个节点,并且节点的长度大于254,这个时候原先的头结点entry1 prevrawlen使用1字节已经不能满足当前的情况了,必须要使用5字节存储,因此entry1的prevrawlen变成了5字节,entry1的长度也会跟着增加4个字节,已经超过了254字节,因为大于254就需要使用5个字节存储,所以entry2的prevrawlen也闹李需要改变为5字节,后面的以此类推,引发了连锁更新,这种情况称之为连锁更新:
总结空滚
(1)Redis压缩列表使用了一块连续的内存,来节约内存空间。
(2)压缩列表的节点可以存储字符串或者整数类型的值,它采用了变长的编码方式,根据数据类型的不同以及数据长度的不同,选择不同的编码方式,每种编码占用的字节大小不同,以此来节约内存。
(3)压缩列表的每个节点中存储了前一个节点的字节长度,如果知道某个节点的地址,可以使用地址减去字节长度定位到上一个节点,不过新增节点的时候,由于前一个节点的长度大于254使用5个字节,小于254使用1个字节存储,在一些极端的情况下由于长度的变化会引起连锁更新。
参考
黄健宏《Redis设计与实现》
极客时间 - Redis源码剖析与实战(蒋德钧)
【张铁蕾】Redis内部数据结构详解(4)——ziplist
【_HelloBug】Redis-压缩表-__ziplistInsert详解
图解Redis之数据结构篇——压缩列表
Redis版本:redis-6.2.5
[img]简单介绍redis以及ubuntu和windows下怎么安装redis和配置文件详解
先顷粗核雀掘下载redis,找到下载的压缩包 redis-64.3.0.503.zip,解压后,重命凳神名为redis-3.0,置于某个文件夹下(如D:\Program Files)。
1. 运行Redis服务器端
直接双击D:\Program Files\redis-3.0目录下的redis-server.exe文件(redis服务器端),就会以窗口的形式运行Redis服务器(但该窗口不可关闭,否则,Redis服务不可用)。此种运行redis服务器的方式,没有加载指定的配置文件。
2. 运行Redis客户端
直接双击D:\Program Files\redis-3.0目录下的redis-cli.exe文件(redis客户端),如果显示127.0.0.1:6379 ,就说明客户端运行成功。
输入命令: keys *
查看所有的键
如果提示“NOAUTH Authentication required.”,则说明Redis服务器设置了密码,请输入正确的密码后,再来进行其他操作。
输入命令: auth 密码
如果提示OK,就说明密码正确。
Tips:可以将D:\Program Files\redis-3.0目录下的redis-server.exe发送到桌面快捷方式,便于以后快速打开Redis客户端。
3. 将Redis服务安装到本地服务
由于上述启动Redis服务器的方式有点复杂,且redis服务窗口不可关闭。故这里介绍如何将Redis服务安装到Windows系统的本地服务。
复制D:\Program Files\redis-3.0目录下的redis.windows.conf文件,重命名为redis.conf,来作为redis的配置文件。
打开win系统的命令行,依次输入下列命令:
d: (回车,切换到d盘)
cd Program Files\redis-3.0\ (回车,切换至D:\Program Files\redis-3.0目录)
redis-server --service-install redis.conf --loglevel verbose (回车,安装redis本地服务,指定配置文件redis.conf)
操作完成后,就可以到win系统的本地服务管理处,查看和操作Redis服务。(计算机图标右键 - 管理) - 服务和应用程序 - 服务)
4. 设置Redis密码
编辑D:\Program Files\redis-3.0目录下的redis.conf配置文件,找到如下代码:
# requirepass foobared
将其复制一行,去掉前导的#注释符,将foobared改为你要设置的密码,如:
requirepass test
保存退出。
重启Redis服务,配置文件就会生效。
redis.conf详解之tls-protocols
tls-protocols 设置服务誉链哪端支持的TLS协议版本。
1.默认仅支持 TLSv1.2 和 TLSv1.3 。
2.多个版本用 空格 隔开。
3. client 与 server 协议版本不匹配将无法建立连接。
redis服唤腔务端庆码仅支持 TLS1.3
redis客户端仅支持 TLS1.1
报错如下
redis.conf详解总纲
欢迎加v交流:maxwangnan005
redis.conf详解之timeout
单位是 秒
在timeout时间内如果没有数据交互,redis侧将关闭连接。
没有数据交互 :redis客户端不向服务端发送任何数据。
1. 0 代表永不断开( 在macOS测试不受内核保活定时器影响扒碧渣 )。
2. tcp/ip 连接、 unix socket 连接均受 timeout 影响。
2. timeout 在源码中对应 server.maxidletime
3.源码以及一些注释:
查看慧旦
修改春悄
redis.conf详解之bind
bind 用于绑定本机的网络接口(网卡),redis只接受来自绑定网络接口的请求。
比如本机有两个网卡分别对应ip 1.1.1.1 , 2.2.2.2 ,配置 bind 1.1.1.1 ,客户端 288.30.3.3 访问 2.2.2.2 将无法连接redis。
如果不配置 bind , redis 将监听本机所有可用的网络接口。
不配置指: redis.conf 中无 bind 配置、 #bind 127.0.0.1 。
- 当指定的网络接口不可用且其他网络接口可用时,不会启动颤晌失败。
当 17.0.0.1 为 无 效ip,127.0.0.1为汪穗 有 效ip。以下配置困洞卜以及 log 输出。
关于redis详解和redisson详解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。