我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis数据库

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis数据库

Redis数据库[数据库教程]

Redis数据库

Redis将数据库结构保存在RedisServer数据结构中的db数组中,数组大小由RedisServer结构中的dbnum决定,dbnum的默认大小为16。结构如下:

class RedisServer {
    
    int dbnum;
    
    RedisDb[] db;
}

而对于客户端而言,会选择一个指定的数据库,可以通过select命令来切换数据库,目标数据库保存在redis客户端数据结构RedisClient的db指针中。

class RedisClient {
    RedisDb db;
}

RedisDb

Redis是一个K-V数据库,RedisDb中的dict字典保存了数据库中的所有键值对,这个字典被称作键空间。键空间的key是Redis字符串对象,value是RedisObject对象。此外还有expire字典保存了键空间中所有键的过期时间,expire的key是键空间中的key,value是保存的过期时间。

class RedisDb {
    // 键空间
	Dict dict;
    // 键空间设置了过期时间的键的过期时间
    Dict expire;
}

当使用Redis命令对数据库进行读写时,会进行一些额外操作

  • 更新命中和不命中次数,通过Info status命令的keyspace_hits和keyspace_miss查看。
  • 更新键的LRU时间,即ReidisObject的lru属性。
  • 读取时发现键过期,会先删除这个过期键
  • 若有客户端对该键使用watch命令并且服务端是写操作会标记键为脏(dirty),以便提示watch该键的客户端。每进行一次修改脏计数器会加一,这个计数器会触发持久化操作

通过pexpireat命令可以设置对Key过期时间(此外还有expire、expireat、pexpire命令,但底层实现都是pexpireat),过期时间由expire属性保存,通过过期时间和当前时间对比,可以判断键是否过期。此外,可以使用persist命令来移除键的过期时间。

过期键的删除策略

过期键一共由以下三种删除策略,其中第一种为被动删除策略,另外两种是主动删除策略。

  1. 惰性删除。即只在获取键值的时候检查是过期,如果过期则删除键。优点是CPU友好,但因为过期键不访问一直存在原因浪费内存
  2. 定时删除。设置键过期的时候,创建计时器(timer),让定时器来执行删除。优点是及时快速,缺点是删除时会消耗CPU资源,对大量过期加上大量访问不友好,减少了吞吐量。
  3. 定期删除。每隔一段时间删除过期键,删除多少和检查几个数据库由算法决定。上面两种方案的折中策略,需谨慎设置执行策略。

AOF和RDB对过期键的处理

  1. RDB生成RDB文件时,过期Key不会被持久化到RDB文件中。读取RDB文件时,主服务器会对RDB文件中的过期Key进行检查,如果Key过期将不被载入,从服务器则全部载入不进行检查,当主从同步时,已删除的键将被同步。
  2. AOFAOF写入时,已过期的但没有删除的不会对AOF产生任何影响,只有当键被删除了,才会显式的追加Key的Del命令。AOF重写时会对过期键进行检查。
  3. 复制:主服务器删除后会向从服务器发送Del命令同步键被删除。从服务器接受到客户端命令时,即使键已过期也会当作没过期处理。

数据库通知

通过订阅给定的频道或者模式来获知数据库的键的变化和命令执行情况。类似于MySQL监听Binlog。

Redis数据库

原文:https://www.cnblogs.com/ccoder/p/15240003.html

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis数据库

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

数据库-Redis

数据库-Redis     春宵一刻值千金,花有清香月有阴。 简介:数据库-Redis。一、概述Windows &Mac 安装Redis 参考链接:https://www.cnblogs.com/taojietaoge/p/11010704.htmlRedis
数据库-Redis
2015-06-17

Redis数据库

Redis数据库Redis将数据库结构保存在RedisServer数据结构中的db数组中,数组大小由RedisServer结构中的dbnum决定,dbnum的默认大小为16。结构如下:class RedisServer { int dbnum;
Redis数据库
2015-01-28

redis是数据库吗?

是的,redis是一种内存数据库,将数据存储在计算机内存中。它提供类似数据库的功能,包括数据存储、数据查询和事务处理。redis常见于缓存、队列、会话管理和排行榜等场景中。Redis 是数据库吗?回答: 是详细说明:Redis 是一种
redis是数据库吗?
2024-04-19

redis算数据库吗

否,redis 不是传统意义上的数据库。它是一种内存中的键值存储,用于缓存、消息传递和会话管理等目的,但缺乏持久性、事务、结构化数据和查询语言等数据库特征。Redis算数据库吗?简短回答:否,Redis不是传统意义上的数据库。详细回答:
redis算数据库吗
2024-04-20

redis数据库和mysql数据库的区别

差异化对比:redis 是基于内存的键值存储,数据访问速度极快,通常用于缓存等场景;mysql 是关系型数据库,数据存储在硬盘上,适用于需要持久化存储和强大查询功能的场景。Redis 和 MySQL 数据库的区别Redis 和 MySQL
redis数据库和mysql数据库的区别
2024-04-19

Python操作redis数据库

前言:这两天的事情不多,为了避免之前学习的一点点Python知识遗忘,我在Github上找了一些小项目跟着实践。之前的工作有写过相关的Python处理redis处理数据的脚本,但之前没有养成记录积累的习惯,所以~~~~(遗忘了),所以趁此机
2023-01-31

Redis缓存数据库(一)

先导知识:MemcacheMemcache是一个高性能的分布式内存对象缓存系统,代码类似于Hash。已经有了Memcache,为什么还要用Redis呢?下面Memcache的缺点:不支持数据持久化存储不支持主从不支持分片而对比Redis数据库,以上三点都支持,
Redis缓存数据库(一)
2019-11-20

Window环境下的数据库部署——Redis数据库

1.Redis简介Remote Dictionary Server(Redis) 是一个开源的,可基于内存亦可持久化的 Key-Value 数据库. Key 字符类型,其值(value)可以 是 字符串(String), 哈 希(Map), 列表(list),
Window环境下的数据库部署——Redis数据库
2016-12-31

redis数据库和mysql数据库能一起用吗

redis 和 mysql 数据库可以互补使用,redis 的优势包括速度快、可缓存数据、适合会话管理和排行榜,而 mysql 则适合复杂的查询和事务支持。它们可以结合使用,redis 用作缓存或消息传递系统,而 mysql 用作主存储。需
redis数据库和mysql数据库能一起用吗
2024-04-19

redis怎么监听mysql数据库数据

Redis本身并不支持直接监听MySQL数据库的数据变化。但你可以通过编写程序,使用MySQL的binlog来监听数据库的数据变化,并将变化的数据同步到Redis中。具体步骤如下:1. 首先,确保你的MySQL数据库开启了binlog。你可
2023-08-30

redis数据库支持的数据类型

redis 数据库支持多种数据类型,包括:字符串、哈希、列表、集合、有序集合、流、位图、地理空间和 hyperloglog。选择合适的数据类型取决于数据结构、访问模式和空间效率。通过仔细选择,可以优化 redis 的性能和存储效率。Redi
redis数据库支持的数据类型
2024-04-19

编程热搜

目录