redis
奔跑的海星
这个作者很懒,什么都没留下…
展开
-
redis String数据结构 sdshdr解析
Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simpledynamicstring,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。set name val会产生值为“name”和“val”的2个sdshdr对象对象属性如下为什么不直接用C字符串作为字符串存储对象 有下面几个...原创 2019-11-15 11:48:28 · 1211 阅读 · 0 评论 -
redis数据库结构
Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库:struct redisServer{//一个数组,保存着服务器中的所有数据库redisDb *db;//服务器的数据库数量int dbnum;}dbnum属性的值由服务器...原创 2019-12-04 19:55:54 · 840 阅读 · 0 评论 -
redis 设置生存和过期时间的原理
在了解原理前 先来看使用方法通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间,在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键。SETEX命令可以在设置一个字符串键的同时为键设置过期时间(只能用于字符串键)与EXPIRE命令和PEXPIRE命令类似,客户端可以通过EXPIREAT命令或PEXPIREAT命令,以秒...原创 2020-01-08 17:35:40 · 2736 阅读 · 0 评论 -
Redis的过期键删除策略原理
Redis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务器可以很好地在合理使用CPU时间和避免浪费内存空间之间取得平衡。惰性删除惰性删除策略对CPU时间来说是最友好的:程序只会在取出键时才对键进行过期检查,这可以保证删除过期键的操作只会在非做不可的情况下进行,并且删除的目标仅限于当前处理的键,这个策略不会在删除其他无关的过期键上花费任何CPU时间。惰性删...原创 2020-01-09 17:09:45 · 1523 阅读 · 1 评论 -
Redis RDB,AOF持久化原理
RDB持久化因为Redis是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解决这个问题,Redis提供了RDB持久化功能,这个功能可以将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行,该功...原创 2020-01-10 15:56:25 · 2845 阅读 · 1 评论 -
redis命令请求的执行过程
一个命令请求从发送到获得回复的过程中,客户端和服务器需要完成一系列操作。举个例子,如果我们使用客户端执行以下命令:那么从客户端发送SET KEY VALUE命令到获得回复OK期间,客户端和服务器共需要执行以下操作:1)客户端向服务器发送命令请求SET KEY VALUE。2)服务器接收并处理客户端发来的命令请求SET KEY VALUE,在数据库中进行设置操作,并产生命令回复OK。...原创 2020-03-14 17:02:05 · 979 阅读 · 0 评论