一、redis是一个高性能的Nosql数据库,遵照BSD协议,使用c语言编写、支持网络、可基于内存亦可持久化,是一种日志型、Key-Value数据库,也可看作是一个分布式的、基于内存的缓存工具。redis
二、NoSQL数据库的产生是为了解决超大规模和高并发的纯动态网站带来的挑战,尤为是大数据应用难题。sql
三、NoSQL数据库的四大分类:chrome
(1)键值(Key-Value)存储数据库:这一类数据库主要会使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。好比redis,Oracle BDB。docker
(2)列存储数据库:一般用来应对分布式存储的海量数据。键仍然存在,可是它们的特色是指向了多个列。好比HBase。数据库
(3)文档型数据库:该类型的数据库是版本化的文档,以特定的格式存储,好比JSON。文档型数据库能够看做是键值数据库的升级版本,容许嵌套键值。并且文档型数据库比键值数据库的查询效率更高。好比MongoDB。缓存
(4)图形数据库,好比Neo4J。网络
四、NoSQL数据库适用的场景:数据结构
(1)数据模型比较简单,没有太多的字段并发
(2)须要灵活性更强的IT系统,查询速度须要更快app
(3)对数据库性能要求较高,好比键值对数据库直接由键获得值
(4)不须要高度的数据一致性
(5)对于给定的key,能够映射到复杂值的环境
五、redis与其余键值数据库相比,有三大特色:
(1)redis支持数据的持久化,能够将内存中的数据保存在磁盘中,重启时能够再次加载从新使用。
(2)redis不单单支持简单的Key-Value类型的数据,并且还提供list、set、zset、hash等数据结构的存储。
(3)redis支持数据的备份、集群等高可用功能,即master-slave模式的数据备份。
六、redis的特色:
(1)性能极高:redis读的速度是110000次/秒,写的速度是81000次/秒
(2)丰富的数据类型:redis支持的数据类型有string、list、hash、set和order set数据类型的操做。
(3)原子性:redis的全部操做都是原子性的,要么成功执行要么失败彻底不执行。单个操做是原子性的,多个操做也支持原子性,即事务。
(4)占用内存太高,这是缺点。
七、redis能干啥:
(1)内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务。
(2)取最新N个数据的操做:能够将最新的10条评论的ID放在redis的list集合里面。
(3)模拟相似于HttpSession这种须要设定过时时间的功能。
(4)发布、订阅消息系统。
(5)定时器和计数器。
八、以docker方式安装并启动redis服务
(1)拉取redis镜像到本地:
docker pull redis
(2)新建redis容器,之后台模式运行。若是简单点,那就写:docker run -p 6379:6379 -d redis redis-server --appendonly yes。
docker run -p 6379:6379 -v /dyy/myredis/data:/data -v /dyy/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
(3)docker上的redis已经之后台模式运行,接下来执行如下命令进行交互。
docker exec -it 容器ID redis-cli