早上时间学习了一下redis的知识,对其有了简单的认知。
redis是什么
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
按照分布式领域的CAP理论,Consisency、Availability、Toleranceto networkPartitions这三个部分在任何系统架构实现时,只能同时满足其中两点,没法三者兼顾。Redis是一个数据库,它将重点放在了Consisency和Availability上,因而Redis只是一个单机的key/value系统,并不直接支持分布式,同时考虑到Toleranceto network Partitions,它支持将数据同步到多台从库上。
redis的优点
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s。
- 丰富的数据类型 – Redis支持二进制案例的Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 –Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持publish/subscribe,通知, key 过期等等特性。
redis的缺点
- 持久化。Redis直接将数据存储到内存中,可通过两种方式持久化:定时快照(snapshot)和基于语句的追加(AppendOnlyFile,aof)。Snapshot的方法是指每隔一段时间将整个数据库的数据写到磁盘上,很明显,每次均是写全部数据,代价非常高;而aof方法只追踪变化的数据,这类似于mysql的binlog方法,但追加log可能过大,同时所有操作均要重新执行一遍,恢复速度慢。
- 耗内存。尽管Redis对一些数据结构采用了压缩算法存储,但占用内存量还是过高。
redis的命令
redis中的五种数据类型都有着同关系型数据库相同的crud
redis支持发布订阅模式,也就是我们学到的观察者模式
redis中的事务没有关系型数据库事务那么强大,当处于事务中的命令可能会一部分提交一部分失败,这是其事务的不足之处。
redis的安全及优化
redis的配置文件设置密码参数后,客户端连接到redis服务就需要密码验证,这样让redis服务更加安全
redis的备份很容易只要通过save命令即可。备份有两种RDB和AOF。RDB和AOF的区别详见博客
redis的主从复制很简单,redis.conf中两句话即可。
通过早上的学习,发现很多redis还是有很多学习的地方,而我们在ITOO中仅仅用到了缓存这一功能,想想新浪网的强大,如果想学好redis还需要进一步去学习。《redis的设计和实现》这本书网友好评的不少,可以去看看。