【Redis】一、Redis简介及五种数据类型

(一)Redis简介

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

  Redis是一个key-value的存储系统,它通常也被称为数据结构服务器,因为Redis支持丰富的数据类型,值可以是字符串、哈希、列表、集合和有序集合这五种类型。

  Redis可以用作数据库、分布式缓存和消息中间件,它是一个NoSQL数据库。

  和其他 key - value 缓存产品(如Memcache)相比,Redis具有以下几个优势:

  • 支持数据的持久化。内存中的数据可以保存到磁盘中,重启的时候可以再次加载使用。
  • 丰富的数据类型。除了简单的key-value的字符串数据,还提供list,set,zset,hash等数据结构的存储。
  • 性能极高。由于数据保存在内存中,redis读的速度是110000次/s,写的速度是81000次/s 。
  • 原子操作。Redis的所有操作都是原子性的,就是要么成功执行要么失败完全不执行。
  • 支持数据备份。Redis提供基于master-slave模式的数据备份。
  • 丰富的特性。除了五种数据类型,Redis还支持发布-订阅(pub-sub)、通知、设置key的过期时间等等。

(二)Redis的五种数据类型

  Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。每一种数据类型都有大量的操作命令。

1、字符串(String)

  字符串是redis最基本的类型,一个key对应一个value。String类型是二进制安全的,也就是说redis的String可以包含任何数据,比如jpg图片或者序列化的对象。

  string 类型的值最大能存储 512MB,是最常规的存储类型,值除了是字符串之外,还可以是数字,一般用于复杂的计数功能。以下的示例展示Redis字符串的基本操作命令。

【Redis】一、Redis简介及五种数据类型

2、哈希(Hash)

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

  以下的示例展示Redis哈希的基本操作命令。

【Redis】一、Redis简介及五种数据类型

3、列表(List)

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

  使用List的数据结构,可以做简单的消息队列的功能。另外还有一个就是,可以利用lrange命令,做基于redis的分页功能。以下的示例展示Redis列表的基本操作命令。

【Redis】一、Redis简介及五种数据类型

4、集合(Set)

  Redis 的 Set 是 String 类型的无序集合,集合中的成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 2^32 - 1(40多亿个) 。

  Set作为一个无序集合,不含重复元素,适合用来做去重的功能,另外还可以计算交集、并集、差集。以下的示例展示Redis集合的基本操作命令。

【Redis】一、Redis简介及五种数据类型

5、有序集合(zset)

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

  由于zset根据分数进行排序,因此,一些类似于排行榜的应用就很适合用它来存储。以下的示例展示Redis有序集合的基本操作命令。

【Redis】一、Redis简介及五种数据类型

  我们可以看到,Redis支持的五种数据类型各有优势,都有其适用的场合,归纳为下表:

【Redis】一、Redis简介及五种数据类型

  除了以上针对每一种特定数据类型的操作命令,redis还有一些通用的对key的操作命令,如删除键del key等等,示例如下:

【Redis】一、Redis简介及五种数据类型
上一篇:蒙特卡洛法计算定积分—Importance Sampling


下一篇:随机采样和随机模拟:吉布斯采样Gibbs Sampling