1. 简介
Redis是REmote DIctionary Server
的缩写,是一个开源的、高效的key-value数据存储系统,具有以下特点:
- 原子性:Redis所有操作都是原子性;
- 高效性:读写效率超高;
- 可持久化:Redis运行于内存,但可持久化到硬盘;
- 存储类型丰富:Redis支持5种类型的数据结构,分别是
String、Hash、List、Set、Zset
等; - 特性:支持发布订阅、设置过期时间等;
2. 数据结构
2.0 键、值
Redis是key-value数据库,虽支持多种数据结构,但需要声明的是:所有key都是字符串类型,多类型数据结构只能体现在value属性,因此Redis可理解为存储字符串类型的键与5种不同类型值之间的映射关系
。
2.1 String
String是最基础的key-value数据结构,可用于存储任何字符串类型的数据(包括图片、序列化的对象等),其所能存储最大长度为512MB;
其中:key是字符串类型,value支持的类型包括 字符串、整型、浮点型数据;
主要操作命令有:
读:get key
写:set key value
删:del key
对于整数和浮点数还可以值自增、自减操作
2.2 Hash
Hash是一个key-value对的集合,可存储
232−1
键值对(40多亿);
其中:key是字符串类型,value是一个个的key-value对;
主要操作命令有:
写:hset key field1 value1
hmset key field1 value1 field2 value2 ……
读:hget key field1
hgetAll key
删: hdel key
示例:
2.3 List
List可以理解为简单的字符串链表结构,最多可存储
232−1
元素 (40多亿);
其中:key为字符串类型,value为字符串链表;
主要命令有:
头插:lpush key value1 value2 ……
尾插:rpush key value1 value2 ……
掐头:lpop key
去尾:rpop key
范围:lrange key from to
2.4 Set
Set是字符串的无序集合结构,最多可存储
232−1
个元素 (40多亿),由于Set通过哈希表实现的,因此添加,删除,查找的复杂度都是O(1);
其中:key为字符串类型,value为不可重复的字符串集合;
主要命令有:
写:sadd key value1 value2 ……
读: smembers key
sismember key value
删:srem
2.5 Zset
ZSet 和 Set一样也是String类型元素的集合,且不允许重复的成员,但不同的是每个元素(member)都会关联一个double类型的分数(score),然后根据分数升序排序, ZSet的成员是唯一的,但分数(score)是可以重复的;
其中:key为字符串类型,元素member为字符串类型 ,分数score为double类型;
主要命令有:
写:zadd key score member
读:zrange key from to : 根据元素的位置获取多个元素
zrangebyscore key from to:在有序集合中获取给定分值范围的所有元素
删:zrem key member