第一课
1、redis简介
redis全称:remotedictionary server
存储系统:
1、RDBMS关系型数据库: MYSQL/ SQLSERVER
2、NOSQL非关系型数据库: REDIS/MEMCACHED/MongoDB/HBas
2、redis与memcached的区别
如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:
1 、Redis不仅仅支持简单的k/v(key、value)类型的数据,同时还提供list,set,hash等数据结构的存储。
2 、Redis支持数据的备份,即master-slave模式的数据备份,redis通过SENTINEL哨兵来进行主从的切换。redis在3.0 开始支持redis cluster(集群),但是可能并不完善
3、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别(我个人是这么认为的)
4、另外:redis单线程,memcached多线程(可以使用多核cpu)
Redis组件:
1、redis-serverredis的服务端
2、redis-cliredis的客户端
3、commandlineinterface
4、redis-benchmark(压力测试工具)
5、redis-check-dump&redis-check-aof(检查redi持久化工具)
6、corrupted RDB/AOF fileutilities
3、redis 持久化
Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability= age*log (size_in_memory)”计算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以保持超过其机器本身内存大小的数据。当然,机器本身的内存必须要能够保持所有的key,毕竟这些数据是不会进行swap操作的。
同时由于Redis将内存中的数据swap到磁盘中的时候,提供服务的主线程和进行swap操作的子线程会共享这部分内存,所以如果更新需要swap的数据,Redis将阻塞这个操作,直到子线程完成swap操作后才可以进行修改。
4、Redis 并发相关介绍
1、Million small key →stringvaluepairsuse~100MBof memory
2、Single threaded → but cpu should not to be thebottleneck
3、Averagelinuxsystemcandeliver even 500K requestpersecondÿ