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”。


相关问答

更多

springboot整合redis为什么数据存不进redis,实现不了缓存

检查Redis配置是否正确,包括连接地址、密码、端口是否修改之类

redis如何创建MYSQL数据库

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。 String tbname = "login"; //获取mysql表主键值--redis启动时 long id = MySQL. ...

redis如何创建MYSQL数据库

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。 String tbname = "login"; //获取mysql表主键值--redis启动时 long id = MySQL. ...

Redis有哪些数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

redis数据类型有什么好处

1.什么是redis? redis是一个基于内存的高性能key-value数据库 2.redis基本数据类型及应用场景 支持多种数据类型: string(字符串) String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。 常规key-value缓存应用; list(列表) list就是链表,略有数据结构知识的人都应该能理解其结构。使用Lists结构,我们可以轻松地实现最新消息排行等功能。List的另一个应用就是消息队列,可以利用List的PUSH操作 ...

相关文章

更多

最近更新

更多