redisDB 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
redisDB 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票

软件简介

基于redis和mysql的数据持久化方案

redis运行时连接数据库 cache失效时同步读mysql, 数据修改时候通过消息队列通知DB线程写mysql reids.conf增加几个配置选项 mysql_host
mysql_port
mysql_user
mysql_pwd
mysql_dbname
persistence_mmap_file: 消息列队指定的mmap映射文件
write_thread_num 写DB线程数

对key的命名有规范 "tablename_ID(int)"形式, 如果仅仅是 "tablename" 则系统解析的时候ID默认为0 例如 “user_1” 系统会自动对应"user"表的ID为1的行 “user_0” 或者 "user" 系统会自动对应"user"表的ID为0的行

目前支持 string, list, zset, 以及incr 格式, mysql表结构不需要自己定义,系统自动映射 消息队列采用无锁队列, 支持mmap与malloc两种方式, 采用mmap方式理论上在程序意外死掉的时候不丢失队列数据 经过压力测试, 修改前和修改后的redis性能损耗为10% - 20%, 后期会考虑再进行优化 另外因为是同步读DB, 如果大量的cache失效会带来严重的io阻塞, 从而影响性能, 后期考虑加入配置选项在redis启动以后主动从db恢复数据

基于redis 2.6.16修改

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2019/11/17 15:25

探索Redis设计与实现9:数据库redisDb与键过期删除策略

本文转自互联网 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文是微信公众号【Java技术江湖】的《探索Redis设计与实现》其中一篇,本文部分内容来源于网络,...

0
0
发表了博客
2018/12/07 09:40

Redis数据库结构与读写原理

此文已由作者赵计刚薪授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 1、数据库结构 每一个redis服务器内部的数据结构都是一个redisDb[],该数组的大小可以在redis.conf中配置("database 16",默认为16),而我们所有的缓存操作(set/hset/get等)都是在redisDb[]中的一个redisDb(库)上进...

0
0
发表了博客
2013/05/19 17:22

Redis内存存储结构分析

1 Redis 内存存储结构 本文是基于 Redis-v2.2.4 版本进行分析. 1.1 Redis 内存存储总体结构 Redis 是支持多key-value数据库(表)的,并用 RedisDb 来表示一个key-value数据库(表). redisServer 中有一个 redisDb *db; 成员变量, RedisServer 在初始化时,会根据配置文件的 db 数量来创建一个 redisDb 数组. 客户端在连接后,...

0
8
发表了博客
11/24 13:12

使用BeetleX访问redis服务

BeetleX针对redis访问封了全async/await操作模式,通过它可以更高效地访问redis服务。BeetleX.Redis提供读写分离和多机故意写入处理,同时安全的TLS访问机制,在使用功能上组件支持绝大部分基础指令,并提供json,protobuf和messagepack序列化的支持;组件默认基于连接池操作,高并发处理使更简便。 支持指令 组件实现的...

0
0
发表了博客
2019/04/10 10:10

从零开始学习redis源码

  2020的开年是比较艰难的,爆发了肺炎疫情,希望大家多注意安全,也希望疫情早日好转!   以3.2版本的源码为例,开始讲解,有时会贴出源码,进行说明,并会注明源码出处。   数据库   应该都知道默认redis会有16个库,是根据配置文件来的,可以通过select命令来切换数据库。那原理又是如何实现的么?   redis...

0
0
发表于AI & 大数据专区
2019/12/11 18:38

Redis数据库底层实现原理

(一)基本数据结构 1)redisServer Redis服务器使用redisServer结构保存服务器的状态,其中,dbnum表示服务器的数据库数量,一个redisDb类型的数组保存所有的数据库。 struct redisServer { //服务器的数据...

0
0
发表于服务端专区
2018/05/11 16:45

Redis 数据库、键过期的实现

之前的文章讲解了 Redis 的数据结构,这回就可以看看作为内存数据库,Redis 是怎么存储数据的。以及键是怎么过期的。 阅读这篇文章你将会了解到: Redis 的数据库实现 Redis 键过期的策略 数据库的实现 我们先看代码 server.h/redisServer struct redisServer{ ... //保存 db 的数组 redisDb *db; ...

0
0
发表于AI & 大数据专区
2018/03/20 20:40

Redis 数据库、键过期的实现

之前的文章讲解了 Redis 的数据结构,这回就可以看看作为内存数据库,Redis 是怎么存储数据的以及键是怎么过期的。 阅读这篇文章你将会了解到: Redis 的数据库实现 Redis 键过期的策略 数据库的实现 我们先看代码...

0
0
发表了博客
05/19 16:39

php 依赖注入 和 控制反转 php设计模式

什么是依赖注入? IOC名称:控制反转,它还有个名字叫依赖注入(简称DI)。 当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。而采用依赖注入的方式,创建被...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
19 收藏
分享
返回顶部
顶部