Redis是一种开源的、内存数据结构存储系统,用于存储和检索数据的高性能键值存储。它支持各种数据结构,如字符串、哈希、列表、集合、有序集合等。Redis 常用版本主要有Redis 2.x、Redis 3.x、Redis 4.x和Redis 5.x。本文将介绍这些版本的特点和使用示例。

Redis 2.x

Redis 2.x是Redis的早期版本,虽然已经较为陈旧,但仍然被部分用户广泛使用。Redis 2.x主要特点包括:

  1. 单线程执行:Redis 2.x采用单线程模型,通过使用非阻塞I/O和多路复用技术来实现高性能的数据处理和并发访问。这种设计使得Redis能够达到每秒数十万次的请求处理能力。

  2. 持久化支持:Redis 2.x支持两种持久化方式,一种是RDB(Redis DataBase)方式,将内存中的数据定期快照到硬盘上;另一种是AOF(Append-Only File)方式,将每条修改命令追加到文件的末尾,以便在重启时重新执行这些命令来还原数据。

  3. 数据结构支持:Redis 2.x提供了多种数据结构的支持,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等。开发者可以根据具体的业务需求选择合适的数据结构进行存储和操作。

以下是一个使用Redis 2.x的示例代码:

import redis

# 连接Redis服务器
r = redis.Redis(host='localhost', port=6379, db=0)

# 设置键值对
r.set('name', 'Alice')

# 获取键值对
name = r.get('name')
print(name.decode())

# 存储哈希表
r.hset('user', 'name', 'Alice')
r.hset('user', 'age', 20)

# 获取哈希表
user = r.hgetall('user')
print(user)

Redis 3.x

Redis 3.x相较于2.x版本有了一些新的特性和改进。主要特点包括:

  1. 多线程模型:Redis 3.x引入了多线程模型,通过将不同的数据库实例分配给不同的线程来提高并发能力。这样可以更好地利用多核处理器的优势,提高Redis的性能。

  2. GEO地理位置支持:Redis 3.x新增了对地理位置数据的支持,通过使用GEO命令可以对地理位置进行存储和查询。这对于一些依赖地理位置数据的应用场景,如地图服务、附近的人等,提供了很大的便利。

以下是一个使用Redis 3.x的示例代码:

import redis

# 连接Redis服务器
r = redis.Redis(host='localhost', port=6379, db=0)

# 存储地理位置信息
r.geoadd('locations', 116.397128, 39.916527, '北京')
r.geoadd('locations', 121.473704, 31.230393, '上海')

# 获取地理位置信息
locations = r.georadius('locations', 116.404269, 39.914600, 100, unit='km')
print(locations)

Redis 4.x

Redis 4.x版本在功能上和性能上都有了一系列的改进和优化。主要特点包括:

  1. 模块化架构:Redis 4.x引入了模块化架构,允许用户通过加载第三方模块来扩展Redis的功能。这样开发者可以根据实际需求选择合适的模块,而不需要修改Redis的源代码。

  2. 原生集群支持:Redis 4.x提供了原生的集群支持,通过在不同的Redis实例之间分片和复制数据来实现高可用和横向扩展。这样可以更方便地搭建分布式系统,提高系统的可用性和扩展