Redis 简介
一、Redis 简介
redis是一个key-value存储系统。 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。 这些数据类型支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的,支持各种不同方式的排序。
redis 与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改 操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
二、Nosql DB简介
1.什么是Nosql DB?
NoSQL,意即反SQL运动,是一种非关系型的数据存储,key/value键值对存储。
现有Nosql DB 产品: Redis/MongoDB/Memcached/Hbase/Cassandra/ Tokyo Cabinet/Voldemort/Dynomite/Riak/ CouchDB/Hypertable/Flare/Tin/Lightcloud/ KiokuDB/Scalaris/Kai/ThruDB, ......
2.为什么要使用NOSQL非关系数据库?
- High performance - 对数据库高并发读写的需求
- Huge Storage - 对海量数据的高效率存储和访问的需求
- High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
三、Redis数据结构和存储方式
redis目前提供四种数据类型:string,list,set及zset(sorted set)。
Redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。
- save seconds updates :指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。
- appendonly yes/no :是否在每次更新操作后进行日志记录。如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据 文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中。
- appendfsync no/always/everysec :数据缓存同步至磁盘的方式。no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次。