redis
文章平均质量分 84
congchp
这个作者很懒,什么都没留下…
展开
-
rocksdb的特性与应用
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习列族(column family)列族相当于mysql中的table;多个列族共享一个WAL文件,但有独立的memtable和sst文件;WAL是预写日志,对rocksdb的写操作,都是记录WAL,之后才会写磁盘,当数据写入磁盘后,才会删除WAL中对原创 2022-03-27 10:34:28 · 2175 阅读 · 0 评论 -
rocksdb原理与实现
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习rocksdb是什么?rocksdb是facebook的项目,目的是开发一套能在服务器压力下,真正发挥高速存储硬件性能的高效数据库系统;使用C++实现;是嵌入式数据库kv数据库;不提供网络服务,只提供数据持久化的方案。rocksdb是基于leve原创 2022-03-27 10:29:00 · 3479 阅读 · 1 评论 -
redis计数, 布隆过滤器, hyperloglog
redis计数布隆过滤器redis扩展redis通过对外提供一套API和一些数据结构,可以供开发者开发自己的模块并加载到redis中。本质在不侵入redis源码的基础上,提供一种高效的扩展数据结构的方式。API及数据结构参考redismodule.hRedisBloomRedisBloom是redis的一个扩展,我们主要使用了它的布隆过滤器。关于布隆过滤器的原理,参考《hash,bloomfilter,分布式一致性hash》加载到redis中的方法git clone https:/原创 2022-02-28 16:51:00 · 699 阅读 · 0 评论 -
redis io多线程
redis io多线程redis单线程是指logic在单线程中执行。redis io多线程指read、decode、encode、write在io线程池中处理。开启多线程的时候,同一个连接的命令还是按顺序处理的吗?对于多线程,每一个线程都有一个任务队列,redis做了负载均衡,把任务平均分配到每一个线程对应的队列,这里并没有考虑任务是否是同一个连接来的;对于reactor,使用的是request-reply的模式,read后,会将epoll的状态设置为writable,write后,再将状态设.原创 2022-01-29 10:29:43 · 1705 阅读 · 0 评论 -
redis存储结构与数据模型
存储结构redis对外主要提供5种数据类型,string、list、set、zset、hash。对于这些数据类型,最终主要由下图数据结构进行存储。存储转换redis是一个内存数据库,非常注意内存的使用。对于每种数据类型,在不同的条件下,redis使用不同的数据结构进行存储。redis有如下encoding方式,可以通过object encoding key命令查看实际编码方式。/* Objects encoding. Some kind of objects like Strings and.原创 2022-01-29 10:25:27 · 2541 阅读 · 0 评论 -
redis持久化与主从复制
持久化redis 的数据全部在内存中,如果突然宕机,数据就会全部丢失,因此需要持久化来保证 redis 的数据不会因为故障而丢失,redis 重启的时候可以重新加载持久化文件来恢复数据。redis持久化有以下4种方式:aofrdbaof rewriteaof-rdb混用从以下方面了解redis持久化:aof与rdb比较aof rewrite解决了aof什么问题?aof-rdb混用解决aof-rdb什么问题?该如何进行持久化方法的选择redis持原创 2022-01-26 13:44:42 · 340 阅读 · 0 评论 -
异步请求实现
什么是异步请求redis/mysql提供的客户端,hiredis/mysqlclient都是同步的。request发出后,就在等着response。mysql_query(sql), 一个请求发出后,当前线程挂起等待,当mysql server返回结果后,函数才返回。这就是一个同步的请求过程。异步请求,就是请求发出后,不需要等待结果,函数直接返回,当server返回结果后,调用回调函数进行处理。如何做一个异步请求?发送请求,是一个连接还是多个连接?指的是一个请求没有返回,再发起一个请求,是.原创 2022-01-21 16:34:19 · 1939 阅读 · 0 评论 -
redis事务与异步请求
redis的网络层为什么mysql每一条连接对应一个线程?mysql有网络io,磁盘io,涉及的操作比较多,需要有一个单独的线程来处理。使用单线程或者线程池都不太合适。redis使用的是单reactor网络模型,因为redis都是网络io,单reactor可以满足。redis pipelineredis pipeline 是由客户端提供的,而不是服务端提供的,是将多条命令一起发送到redis。redis是单线程的,所以会顺序执行pipeline中的命令,但是pipeline不具备事务性,所以并.原创 2022-01-21 16:07:52 · 749 阅读 · 0 评论 -
mysql缓存方案
数据库提升性能的方式数据库连接池。使用的是阻塞io,连接池一般结合线程池一起使用。异步请求。使用异步io,需要自己实现mysql的协议。从sql执行处罚,使用sql预编译执行的方式,prepare,跳过词法句法分析、权限验证、优化器等步骤,提高执行效率。读写分离。对于一致性要求不是特别高的场景,也就是最终一致性,并且读多写少的场景,可以使用主数据库写,从数据库读的方式。数据库主从方式可以解决数据库单点故障的问题。使用数据库主从方式,如果一致性要求高:使用主从半同步复制;读去主数据库读原创 2022-01-21 10:13:36 · 1880 阅读 · 0 评论