PS:视频中在谈链表的时候提到一点关于栈和队列的,形容的非常形象。 栈就好像一个桶,是上通下堵的,所以为先进后出。 而队列是一个没底的桶,上面进下面出,所以先进先出。
Redis其实就是NoSQL数据库的一种表现,是一种键值(key-value)数据库。Redis是一个开源的,先进的key-value存储。它通常被称为数据结构服务器,因为键可以包含字符串、哈希、链表、集合和有序集合。这些数据类型都支持push/pop、add/remove及取交集和并集及更丰富的操作,Redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中的,它也可以周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
NoSQL和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如:SQL标准,ACID属性、表结构等。
NoSQL数据库的主要特点有:
非关系型分布式开源水平可扩展通俗的讲主要是:
处理超大量的数据运行在便宜的PC服务器集群上击碎了性能瓶颈NoSQL的应用场景:
对数据的高并发读写对海量数据的高效率存储和访问对数据的高可扩展性和高可用性Memcached仅支持存储值为字符串的键值对,且键和值都必须是字符串。
MongoDB,文档数据库,存储由JSON/BSON组成的文档。
Redis,可以存储多种数据结构类型。
应用程序会优先访问Redis,只有当Redis访问失败时才访问Mysql或Oracle等关系型数据库。
地址Redis下载地址,切记要下载稳定版(stable)。
Redis服务端默认的连接端口是6379。
主要包含:
字符串列表散列集合(set,可去重)有序集合(zset,可排序)HyperLogLog(不常用)使用Redis时,如果你碰到一个问题,首先应该想到的是选择哪种数据结构可以把哪些功能问题解决,利用Redis的数据结构方便你解决很多问题。
将存储在内存里的数据保存在到硬盘里面,保证数据安全,方便进行数据备份和恢复。一定要定期进行持久化存储!
发布与订阅功能将消息同时分发给多个客户端,用于构建广播系统。消息队列,有多个生产者和消费者。
过期键功能为键设置一个过期时间,让它在指定的时间之后自动被删除。比如可以做当日的排名功能,设置过期时间到第二天释放,重新进行排名。
事务功能原子的执行多个操作,并提供乐观锁的功能,保证处理数据时的安全性。
lua脚本功能在服务器端原子的执行多个操作,完成复杂的功能,并减少客户端与服务器之间的往返通信次数。
复制(主从复制)为指定的Redis服务器创建一个或多个复制品,用于提升数据安全性,并分担读请求的负载。
Sentinel(哨兵)监控Redis服务器的状态,并在服务器发生故障时,进行自动故障转移。为了解决主从复制的问题才出的。
集群创建分布式数据库,每个服务器分别执行一部分读和写的操作。3.0才出,自带的集群效果。