美文网首页
redis(8)数据库

redis(8)数据库

作者: 大飞飞_s8 | 来源:发表于2019-09-26 19:39 被阅读0次

1、redis服务器中的数据库,都保存在服务器状态redisserver结构的db数组中,每一个项都是redisdb

dbnum : 服务器数据库数量,默认创建16个数据库

2、切换数据库

redisclient 保存着数据库的指针 select 2 ,切换到下标为2的数据库,通过修改Redisclient.db指针实现

3、数据库键空间

redisdb结构的dict字典保存了数据库中的所有键值对,将这个字典称为键空间(key space)

键空间中的键是一个字符串对象,值可以是字符串对象,列表对象,hash对象,集合对象,有序集合对象任意一种redis对象

3.1、redis支持 添加新键,删除键,对键取值,清空数据库

4、读写键空间时的维护

读取一个键后,服务器会根据键是否存在来更新服务器键空间命中(hit)次数或键空间不命中(miss)次数,值可以通过info stats 命令查询keyspace_hits 属性和keyspace_misses属性

读取后悔更新lru,最后一次使用时间,这个值可以用于计算键的空置时间,使用objectidletime key来查看key闲置时间

如果服务器读取一个键时发现该键过期,会先删除这个过期键,然后执行余下操作

如果客户端使用watch命令监视了某个键,那么服务器被监视的键修改之后,会将这个键标记为脏,从而让事务程序注意到已经被修改,每次修改,都会对脏键计数器增1

5、设置键的生存时间或过期时间 expire pexpire expireat pexpireat

5.1、保存过期时间,redisdb结构的expires字典保存了数据库中所有键的过期时间,我们称为字典的过期字典,键是一个指针,指向键空间中某个键对象,值是一个long类型整数,保存了键所指向的数据库的过期时间

6、移除过期时间 persist

7、过期键删除

定时删除,设置过期时间同时,创建一个定时器,让定时器在键的过期时间来临时,删除键,主动删除,耗CPU,节省内存

惰性删除,放任键过期不管,但是每次从键空间中获取时,都检查取得的键是否过期,如果过期就删除该键,如果没有过期,就返回该键,被动删除,耗内存,省CPU

定期删除:每个一段时间,就对数据库进行一次检查,删除里面的过期键,至于删除多少个数据库,则由算法决定 ,需要合理设置执行时长和执行频率

可以配合使用第一种和第二种

8、aof rdb 和复制功能对过期键的处理

执行save或者bgsave命令创建一个新的rdb文件时,程序会对数据库中的键进行检查,已过期键不会被保存到rdb文件中

当启动redis服务器时候,如果开启了rdb功能,,服务器将载入rdb文件

当服务器以aof持久化模式运行,某个过期键被删除,aof文件会追加(append)一条del命令,来显式地记录该键已被删除

复制

主服务器命令会同步到从服务器

9、数据库通知

相关文章

  • day40-Python连接Redis

    一、Redis 1.Redis数据库 Redis内存数据库 -> KV数据库 2.Redis持久化数据 Redis...

  • 云数据库 Redis 版功能特性

    关于云数据库 Redis 版详细了解: 云数据库 Redis 版使用教程 (云数据库Redis版是兼容Redis协...

  • Thinkphp5怎么扩展Redis数据库,实现Redis的CU

    Thinkphp5怎么扩展Redis数据库,实现Redis的CURD操作 Redis怎么使用Redis数据库,本篇...

  • redis存取

    Redis的数据库 Redis 对数据库进行了抽象,在 Redis 源码中,承担数据库角色的叫 redisDb。 ...

  • Redis数据库概述

    (一):什么是Redis数据库 redis是Nosql数据库中使用较为广泛的非关系型内存数据库,redis内部是一...

  • redis 字符串的操作、hash类型和list类型

    redis 的读写效率很高redis:数据库(key:value) 键值存储redis : 是非关系型数据库,是一...

  • 数据库

    redis 的读写效率很高redis:数据库(key:value) 键值存储redis : 是非关系型数据库,是一...

  • redis 字符串的操作、hash类型和list类型

    redis 的读写效率很高redis:数据库(key:value) 键值存储redis : 是非关系型数据库,是一...

  • 8 Redis数据库

    Redis数据库 ->非关系型数据库 1、Redis使用内存读写,硬盘进行备份数据 ->内存读写速度快,但成本高,...

  • redis(8)数据库

    1、redis服务器中的数据库,都保存在服务器状态redisserver结构的db数组中,每一个项都是redisd...

网友评论

      本文标题:redis(8)数据库

      本文链接:https://www.haomeiwen.com/subject/laukyctx.html