前言
读书笔记系列主要记录自己看的书籍中的知识点,算是一个归纳整理吧。Redis在我们的日常开发中可以说是很常用了,《Redis开发与运维》这本书讲解了Redis开发和运维的方方面面,很系统、全面,关键是实用。特来撸撸它,记录一番。全书分为14章,下面将记录个人认为每章中重要的知识点。
一、Redis初识
Redis是一种基于键值对(key-value)的NoSQL数据库,Redis中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法构成,可以满足很多的应用场景。因为Redis会将所有数据都放在内存里,所以它的读写性能非常好。Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样发生断电或者机器故障,内存中的数据就不会丢失。当然Redis还提供了其他很多附加功能。
1、Redis特性
(1)速度快
Redis的所有数据都是放在内存里的,这是速度快的最主要原因;
Redis是用C语言实现的,“距离”操作系统更近,执行速度相对会更快;
Redis采用单线程架构,预防了多线程可能产生的竞争问题;
(2)基于键值对的数据结构
Redis中的值不仅可以是字符串,还可以是具体的数据结构,方面在不同应用场景的开发。Redis主要提供五种数据结构:字符串、哈希、列表、集合、有序列表,并且在字符串的基础上演变出来了位图(Bitmaps)和HyperLogLog俩种“数据结构”。Redis3.2版本加入了GEO(地理信息定位)的功能。
(3)丰富的功能
除了5种数据结构,还有其他额外的许多功能:
键过期功能,用来实现缓存;
发布订阅功能,用来实现消息系统;
Lua脚本功能,利用Lua脚本创造出新的Redis命令;
简单的事务功能,在一定程度上保证事务特性;
流水线(Pipeline)功能,客户端能将一批命令一次性传到Redis,减少网络开销。
(4)简单稳定
代码少,单线程,服务端、客户端处理简单,redis不依赖操作系统中的类库,自己实现了事件处理的相关功能。
(5)客户端语言多
redis提供了简单的TCP通信协议,很多编程语言可以很方便的接入到redis。
(6)持久化
redis提供了两种持久化方式:RDB和AOF。可以用这两种策略将内存的数据