Redis简介
- Redis支持数据的持久化,可以将内存中的数据存储到磁盘中,重启的时候可以再次加载使用
- Redis不仅支持Key-Value类型的数据,还支持list,set,zset,hash等数据结构的存储
- Redis支持数据的备份,即master-slave模式的数据备份
Redis优势
- 性能极高:读的速度110000次/秒,写的速度81000次/秒
- 丰富的数据类型:支持二进制案例的String,list,hash,set和Ordered Set数据类型操作
- 原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行
- 丰富的特性:支持publish/subscribe,通知key过期等特性
Redis与其他Key-Value存储的不同:
- Redis有着更为复杂的数据结构且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。既可以作为主数据库(primary database)使用,又可以作为其他存储系统的辅助数据库(auxiliary database)使用
- Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面,他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
- Redis实现主从复制特性:执行复制的从服务器会连接上主服务器,接收主服务器发送的整个数据库的初始副本;之后主服务器执行的写命令,都会被发送给所有连接着的从服务器去执行,从而实时的更新从服务器的数据集。因为从服务器包含的数据会不断的进行更新,所以客户端可以向任一从服务器发送读请求,以此来避免对主服务器进行集中式的访问。
五种数据结构
String
(字符串)、List
(列表)、Set
(集合)、Zset
(有序集合)、Hash
(散列)- 对五种数据结构都有效的命令:
type
、rename
、del
String
- set:设置String值,set key value
- get: 获取key对应的value,get key
- del: 删除key、value键值对
List
- lpush、rpush:左端、右端放入String
- lpop、rpop:左端、右端弹出String
- lindex:用于获取列表在给定位置上的一个元素
- lrange:用于获取在给定范围上的所有元素
Set
- sadd:将元素添加到集合
- srem: 从集合里面移除元素
- sismember: 快速检查一个元素是否在集合中
- smembers: 获取集合包含的所有元素(若元素过多,该命令速度可能会很慢)
- sinter、sunion、sdiff:集合的交集、并集、差集
Hash
- hset:设置散列键值对,hset map key value
- hget:获取散列键值对,hget map key
- hgetall:获取所有的键值对
- hdel:删除指定的键值对
Zset
- zadd:带有指定分值的成员添加到有序集合里,zadd zset 1.2 member1
- zrange:获取多个元素,按照分数的大小升序
- zrangescore:获取给定分值范围内的所有元素
- zrem:如果给定成员存在于有序集合,移除该元素
Redis官网:https://redis.io/
测试Redis API:https://try.redis.io/