Redis独立功能
一、发布与订阅
Redis的发布订阅功能由PUBLISH, SUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE等命令实现,客户端可以订阅一个或多个频道/模式,服务器根据是否订阅频道、模式是否匹配,决定是否发送给指定客户端消息。
Redis的发布订阅功能由PUBLISH, SUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE等命令实现,客户端可以订阅一个或多个频道/模式,服务器根据是否订阅频道、模式是否匹配,决定是否发送给指定客户端消息。
Redis中可以使用SLAVEOF <master_ip> <master_port>
实现主从复制,复制功能分两个操作:
Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库。数组长度(数据库数量)由dbnum控制,默认有16个,通过SELECT
命令切换数据库。
RedisClient结构中的db属性指向当前所使用的数据库,SELECT命令原理即修改该指针。
Redis是一个键值对K-V数据库服务器,服务器中的每个数据库都由一个redis.h/redisDb结构表示,其中,redisDb结构的dict字典保存了数据库中的所有键值对,这个字典称为键空间(key space)。所有针对数据库中数据的操作本质上都是对键空间字典的操作,同时也会进行一些维护:
Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。不过Redis没有直接使用C语言中的字符串,而只会使用C字符串作为字面量,因为C语言字符串存在很多问题:
Redis构建了一种新的字符串结构,称为简单动态字符串(Simple Dynamic String),简称SDS。
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。
1、连接层
2、服务层
3、引擎层
4、存储层
canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
MySQL的主从复制涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点,如下图所示:
ubuntu上安装Mysql
修改主库环境配置
相关信息
进入 mysql 环境配置 mysql.cnf
vim /etc/mysql/mysql.conf.d/mysql.cnf
# 添加以下环境配置
[mysqld]
#[必须]主服务器唯一ID
server-id=1
#[必须]启用二进制日志,无后缀的文件名。也可以是本地的路径/log/bin-log
log-bin=bin-log
Redis五大数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合) 和 zset(sorted set:有序集合)
提示
String是redis最基本的操作,一个key对应一个value str1 := "hello"
String类型是二进制安全的。除普通的字符串外,也可以存放图片等数据
redis中字符串value最大是512M