redis数据库
来源:互联网 发布:c语言图书管理系统 编辑:程序博客网 时间:2024/06/06 02:17
redis数据库
创建数据库
在Redis的server端,维护着多个数据库(默认为16个)。
所有的数据库以数组的形式保存在redisServer结构中
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
在initServer()初始化server时,会根据dbnum来创建数据库
- 1
- 1
dbnum属性值由服务器配置的database选项决定,默认为16。因此redis服务器端默认会创建16个数据库,如下图所示:
切换数据库
同时每个client也维护着一个redisDB指针,来指向client当前正在操作的数据库
每次client与server建立连接时,默认的都是选择的0号数据库。
client可以用命令select来选择具体要操作的数据库。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
当client执行了命令select 1
之后,如下图所示:
定义
数据库的定义如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
其中最重要的成员为dict,我们操作的所有数据都保存在dict中,包括字符串、list等所有类型的key-value对。
db->dict
db->dict由数据结构dict字典实现,用于保存数据库中所有的key-value对。
数据库中,key和value都是通过对象robject来实现的。其中所有的key都是字符串类型的对象,而value可以是5中类型中的任意一种。
当执行下列操作后
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
得到的数据库示意图如下:
其中键hash对应的value本应是一个ziplist结构,但是为了体现多种编码方式,示意图中以hash表的形式实现。
注意
在db中,通过dict保存所有的key-value对。因此所有的key必须唯一
所有的key都是字符串类型的,在找到key对应的value之后,可以通过value指向的对象robject来判断数据的类型。
但是对于其它类型的命令,当value与命令类型不一致时,就会报错。
本文所引用的源码全部来自Redis3.0.7版本
- Redis数据库
- redis数据库
- Redis 数据库
- redis 数据库
- redis数据库
- redis数据库
- Redis数据库
- redis数据库
- redis数据库
- redis--数据库
- redis--数据库
- Redis数据库
- redis数据库
- Redis数据库
- Redis数据库
- Redis 数据库(1)--redis中的数据库
- redis的数据库设计
- Redis 数据库官方文档
- Oracle体系结构和启动关闭阶段
- [机器学习篇]基于Scikit learn库中KNN,SVM算法的笔迹识别
- linode上快速建立Spark源码阅读环境
- 【t014】拯数
- POJ2425(树形,无向无环图博弈) SG函数
- redis数据库
- SpringMVC文件上传下载
- spark 中 rdd to dataframe 问题
- Linux学习之I/O内存访问详解
- Hive源码调试步骤
- <Linux多线程服务端编程>学习记录
- Java 网络编程简单学习笔记1
- 关于adb
- 72. Edit Distance