- redis安装-redis集群管理
- redis主从复制(读写分离)-redis集群管理
- redis主从从架构搭建-redis集群管理
- redis从库只读设置-redis集群管理
- redis主从复制的原理-redis集群管理
- redis sentinel(哨兵) 配置详解-redis集群管理
- redis sentinel.conf详解-redis集群管理
- redis 集群环境搭建-redis集群管理
- redis集群插槽分配-redis集群管理
- redis新增集群节点-redis集群管理
- redis删除集群节点-redis集群管理
- redis集群出现宕机没法访问-redis集群管理
- redis 集群使用主从复制架构-redis集群管理
- Redis概述
- 基于linux下redis安装与配置
- 基于window安装redis
- Redis配置文件详解
- 通过redis客户端查看和设置配置
- Redis 客户端连接、密码验证、连接数设置
- 使用info命令获取 redis 服务详细信息
- Redis Desktop Manager客户端使用教程
知识点
相关文章
更多最近更新
更多Redis 数据库内部结构-Redis数据类型
2019-03-18 07:51|来源: 网路
Redis 数据库内部结构
Redis 中的每个数据库,都由一个redis.h/redisDb 结构表示:
typedef struct redisDb {
int id; // 保存着数据库以整数表示的号码
dict *dict; // 保存着所有键值对数据,这个属性也被称为键空间(key space)
dict *expires; // 保存着键的过期信息
dict *blocking_keys; // 实现列表阻塞原语,在列表类型一章有详细的讨论
dict *watched_keys;// 用于实现WATCH 命令
}redisDb;
因为 Redis 是一个键值对数据库( key-value pairs database ),所以它的数据库本身也是一个字典(俗称 key space)
• 字典的键是一个字符串对象。
• 字典的值则可以是包括字符串、列表、哈希表、集合或有序集在内的任意一种Redis类型对象。
在 redisDb 结构的 dict 属性中,保存着数据库的所有键值对数据。
下图展示了一个包含number 、book 、message 三个键的数据库—其中 number 键是一个列表,列表中包含三个整数值;book 键是一个哈希表,表中包含三个键值对;而 message 键则指向另一个字符串。
键值的语法约定
命令
Redis中的命令不区分大小写,SET与set效果是一样的。
主键(key)
可以用任何二进制序列作为key值,从形如“ foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值。
关于key的规则
• 可以用任何二进制序列作为key值。
• 格式约定:object-type:id:field。
• 不用太长的键值。不仅消耗内存,而且在数据查找中计算成本很高。
• 太短的键值通常也不是好主意,可读性差。
如用“user:1000:password”来代替“u:1000:pwd”。
redis知识点
redis快速入门
reids常用命令
redis数据结构
java_API_客户端
Jedis
Tlcache
redis_持久化
AOF
RDB
发布订阅(pub/sub)
redis_事件
redis事务
redis通讯协议
RESP(Redis Serialization Protocol)
redis高可用
redis哨兵
监控(Monitoring) 提醒(Notification) 自动故障迁移(Automatic failover)
redis主从复制
-
- 主从复制
- 从从复制
-
- slave向master发送sync命令;
- master开启子进程执行bgsave写入rdb文件;
- master发送缓存和RDB文件给slave;
- master发送数据发送给slave完成复制;
redis集群(Redis_Cluster)
相关问答
更多-
spring cache +redis与直接用redis有什么不同么?[2022-11-03]
集群环境下,每台服务器的spring cache是不同步的,这样会出问题的,spring cache只适合单机环境 redis是设置单独的缓存服务器,所有集群服务器统一访问redis,不会出现缓存不同步的情况 spring cache是很早就有的东西,现在+redis是为了顺应时代,更好的兼容集群环境,加强保留spring cache功能,不如直接使用redis -
redis怎么使用[2024-01-20]
应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。 同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。 这样处理,主要是实时读写redis,而mysql数据则通过队列异步处理,缓解mysql压力,不过这种方法应用场景主要基于高并发,而且redis的高可用集群架构相对更复杂,一般不是很推荐。 -
Redis有哪些数据类型[2022-03-21]
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 -
springboot整合redis为什么数据存不进redis,实现不了缓存[2023-12-04]
检查Redis配置是否正确,包括连接地址、密码、端口是否修改之类 -
redis怎么使用[2022-05-23]
应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。 同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。 这样处理,主要是实时读写redis,而mysql数据则通过队列异步处理,缓解mysql压力,不过这种方法应用场景主要基于高并发,而且redis的高可用集群架构相对更复杂,一般不是很推荐。 -
清空数据库:打开redis-client.exe,输入命令flushdb redis自带持久化,因此是不会因为掉电而丢失所有内容的。默认情况下,redis每隔一定时间间隔会对数据库做一次内存快照,记录数据库此刻的内容;启动服务器时会自动加载内存快照。 你可以打开edis文件夹里.rdb文件看看。
-
redis是怎么存储数据的[2023-06-22]
是人为存进去的。 先从redis取,如果没有则从数据库取,然后会回写到redis中,这样下次可以继续从redis区 -
Redis vs MemoryCache(Redis vs MemoryCache)[2023-08-20]
MemoryCache被嵌入进程中,因此只能用作该进程的普通键值存储。 MemoryCache的单独服务器对应的将被memcached 。 尽管redis是一种可以在其他服务器上托管的数据结构服务器,可以像memcached一样通过网络进行交互,但redis支持一系列复杂的数据类型和操作,以提供逻辑和智能缓存。 MemoryCache is embedded in the process , hence can only be used as a plain key-value store from tha ... -
Redis作为数据库(Redis as a database)[2022-04-22]
您可以通过多种不同的方式使用Redis作为权威性商店: 打开AOF (仅追加文件存储) 请参阅AOF文档 。 这将保留对您的数据集实时执行的所有Redis命令的日志。 使用Master-Slave复制运行Redis, 请参阅复制文档 。 这将允许您提供高可用性,如果您的一个实例失败。 如果您运行在像EC2这样的东西上,您可以EBS返回您的Redis分区,以提供另一层防范实例故障。 Redis集群 - 在这里,这是专门设计为运行Redis的一种方式,可以帮助HA和可扩展性。 但是,至少还有六个月左右的时间。 ... -
是 - 键名必须是唯一的,因为每个键可以存储一个且只有一个基本数据结构 - 字符串,哈希,列表,集或排序集(位图类型的位图和HLL是字符串)。 Yes - it is necessary that key names be unique as each key can store one and only one basic data structure - String, Hash, List, Set or a Sorted Set (the underlying type of Bitmaps and ...