不浪费大好的周末时光,记录下常用中间redis和kafka架构、使用场景和坑点说明,仅作个人记录使用
一、Redis
Redis的主要功能都基于单线程模型实现,也就是说Redis使用一个线程来服务所有的客户端请求,同时Redis采用了非阻塞式IO,并精细地优化各种命令的算法时间复杂度,这些信息意味着:
Redis是线程安全的(因为只有一个线程),其所有操作都是原子的,不会因并发产生数据异常
Redis的速度非常快(因为使用非阻塞式IO,且大部分命令的算法时间复杂度都是O(1))
使用高耗时的Redis命令是很危险的,会占用唯一的一个线程的大量处理时间,导致所有的请求都被拖慢。如mget LINSERT等(当然,集群模式也无法进行mget类操作)
数据结构
1、字符串STRING:键值对,可以存放二进制、字符、数字、图片等等。由于redis内存访问速度非常快且线程安全,可以用于数据库缓存、计数器(库存控制)、共享会话session、锁(通过设置过期时间避免死锁)和快速的完成一些统计分析功能(场景太多,自由发挥),另外可以使用bitmap节省大量空间!
2、哈希HASH:类似于java hashmap 数据线hash打散无法打散再用链表,结果表示为value={ {field1,value1},......{fieldN,v