1.网络IO模型 Memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe 传递给worker线程,进行读写IO, 网络层使用l…
标签:线程
redis关于线程安全问题
redis实际上是采用了线程封闭的观念,把任务封闭在一个线程,自然避免了线程安全问题,不过对于需要依赖多个redis操作的复合操作来说,依然需要锁,而且有可能是分布式锁。
redis为什么效率比较高
1.redis是纯内存数据库,一般都是简单的存取操作,线程占用时间很多,时间的花费主要集中在io上,所以读取 速度快。 2. 再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符…
关于Redis的一些思考和总结
日常的业务系统中经常使用到redis,平时也会研究下redis的设计文档和源码,对redis的使用场景、实现方案、运维要点这些常规知识点都有所了解,但是零零碎碎总感觉不够系统,这里结合源码对自己使用redis过程中的一些…
Redis:分布式锁
Java多线程开发中锁提供了原子性、可见性。但是在分布式系统中,一个进程下的多个线程分布到一个集群中的多台机器上,需要其他方式来保证原子性、可见性。通过封装Redis的SETNX命令,可以实现分布式锁,提供分布式环境下的…
hBase之HTable踩坑
刚发布完,异常暴增,报警电话响个不停,看了下异常信息,竟然是这货: HTable线程不安全引发的异常 看到这异常第一反应就是,完了,HTable线程不安全,我们来看看报错的源码部分,看看对谁的操作线程不安全: 发生异常的…
sqlite性能优化之路-死锁
在之前的篇章中,我们介绍过sqlite的锁机制。从流程图上看来,似乎没什么太大的问题(事实上运行一段时间也没有出现问题) 但实际操作中,我们发现程序偶尔就出现卡死的情况。通过jstack可以看出来很多的线程处于BLOCK…
Sqlite数据库多线程并发问题
数据库只有在事务中才能被修改。 所有更改数据库的SQL命令(除SELECT以外的所有SQL命令)都会自动开启一个新的事务,并且当最后一个查询完成时自动提交。 threadsafe就是指在设置正确的前提下,多线程同时访问S…
SQLiteException: database is locked异常的解决
sqlite数据库,同一时刻允许多个进程/线程读,但同一时刻只允许一个线程写。在操行写操作时,数据库文件被琐定,此时任何其他读/写操作都被阻塞,如果阻塞超过5秒钟(默认是5秒,能过重新编译sqlite可以修改超时时间),…
关于CoreData和SQLite多线程访问时的线程安全问题
关于CoreData和SQLite多线程访问时的线程安全问题 数据库读取操作一般都是多线程访问的。在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱。 IOS中常用的两种数据持久化…
SQLite数据库文件有5种锁的状态:
而要实现事务,就不得不用到锁。一个SQLite数据库文件有5种锁的状态: UNLOCKED:表示数据库此时并未被读写。 SHARED:表示数据库可以被读取。SHARED锁可以同时被多个线程拥有。一旦某个线程持有SHARE…
FMDB与多线程的研究
前言 SQLITE线程安全, 与FMDB多线程安全是两回事; SQLITE默认的线程模式是串行模式, 是线程安全的 FMDatabase多线程不安全, 单个FMDatabaseQueue是多线程安全的; 多线程安全测试 …