Redis 快速入门

823 阅读5分钟

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

特点

Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。 Redis 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 Redis还支持 publish/subscribe, 通知, key 过期等等特性。

数据类型

使用 redis-cli 进入命令行模式。

Redis 键命令的基本语法:COMMAND KEY_NAME

命令参考:redis.io/commands

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)

string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个键最大能存储512MB。

实例:

在以上实例中我们使用了 Redis 的 SETGET 命令。键为 name。

Hash(哈希)

Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。每个 hash 可以存储 232 - 1 键值对(40多亿)。

实例:

以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中我们使用了 Redis HMSET,HGETALL 命令,hkey 为键值。

HSET key field value
HMSET key field1 value1 [field2 value2 ]
HGET key field
HGETALL key

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

实例:

即使值没有打双引号,也默认给你加上。

LLEN key
LPOP key  # 移出并获取列表的第一个元素
RPOP key
LPUSH key value1 [value2] 
RPUSH key value1 [value2] 
LRANGE key start stop  # 获取列表指定范围内的元素
LREM key count value 
LSET key index value 
LINDEX key index 

Set(集合)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

实例:

命令可以tab键自动补全。

SADD key member1 [member2]  # 向集合添加一个或多个成员
SCARD key  # 获取集合的成员数
SMEMBERS key   # 返回集合中的所有成员
SISMEMBER key member  # 判断 member 元素是否是集合 key 的成员
SMOVE source destination member   # 将 member 元素从 source 集合移动到 destination 集合
SREM key member1 [member2]   # 移除集合中一个或多个成员
SRANDMEMBER key [count]   # 返回集合中一个或多个随机数
SUNION key1 [key2]   # 返回所有给定集合的并集
SUNIONSTORE destination key1 [key2]   # 所有给定集合的并集存储在 destination 集合中

zset(sorted set:有序集合)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

实例:

ZADD key score1 member1 [score2 member2]   # 向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD key   # 获取有序集合的成员数
ZRANGE key start stop [WITHSCORES]  # 通过索引区间返回有序集合成指定区间内的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] # 通过分数返回有序集合指定区间内的成员
ZREM key member [member ...] # 移除有序集合中的一个或多个成员
ZREVRANGEBYSCORE key max min [WITHSCORES] # 返回有序集中指定分数区间内的成员,分数从高到低排序

vscode 中 option + 点击 插入光标。

HyperLogLog

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。 Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。 什么是基数?比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

实例:

PFADD key element [element ...]  # 添加指定元素到 HyperLogLog 中。
PFCOUNT key [key ...]  # 返回给定 HyperLogLog 的基数估算值。