Redis 入门指南:在 Python 中使用 Redis

Redis 是一种内存中的键值存储数据库,通常被用作缓存数据库,但其用途远不止于此。本文将介绍如何在 Windows 上安装 Redis,并通过 Python 模块 redis-py 连接和使用 Redis 进行基本的 CRUD 操作。

在 Windows 上安装 Redis

虽然 Redis 官方不支持 Windows 系统,但可以通过 Windows Subsystem for Linux 2 或者 Docker 来安装。本文将介绍使用 Docker 的方法。首先,需要在 Windows 上安装 Docker Desktop,可以从官网下载并安装。安装完成后,在命令提示符中执行以下命令以从 Docker Hub 获取 Redis 镜像:

docker pull redis

执行此命令后,将启动一个使用下载的 Redis 镜像的容器。

现在,已经成功在机器上启动了Redis服务器。

安装 Redis-py

为了在Python中连接和使用Redis,将使用一个名为 redis-py 的Python模块。可以通过在命令提示符中执行以下命令来安装:

pip install redis

现在已经准备好了一切,可以开始编程部分了。

使用 Redis-py

在执行任何 CRUD 操作之前,首先需要连接到Redis服务器,这在 redis-py 中非常简单。需要将 decode_responses 参数设置为 true,以确保不会以字节格式接收响应。

import redis r = redis.Redis(decode_responses=True) r.ping() True

现在已经连接到了 Redis 服务器,让开始执行简单的 CRUD 操作。

要设置一个键值对,使用 "set" 函数,它接受键和值作为参数。请注意,键应该是字符串数据类型或字节。

r.set('hello', 'world')

要获取特定键的值,使用 "get" 函数,它接受想要返回值的键。

r.get('hello')

输出结果为 "world"。

要设置多个键值对,使用 "mset" 函数,它接受多个键值对作为参数。

data = { 'hello': 'world', 'lorem': 'ipsum' } r.mset(data) r.get('lorem')

输出结果为 "ipsum"。

要设置集合类型的键值对,使用 "sadd" 函数。集合类型只包含唯一元素,与列表类型不同。让存储一组水果,确保没有重复的水果。

fruits = ["avocado", "strawberry", "strawberry", "mango", "orange"] r.sadd('fruits', *fruits)

要获取刚刚存储的所有水果值,可以使用 "smembers" 函数。

r.smembers('fruits')

输出结果为 {'avocado', 'mango', 'orange', 'strawberry'}。

可以使用 "lpush" 函数存储列表类型的数据。让使用这个函数存储一个编程语言列表。

programming_languages = ['python', 'C#', 'C++', 'C++', 'javascript'] r.lpush('languages', *programming_languages)

要获取列表中的所有元素,使用 "lrange" 函数,它帮助遍历列表中的元素。"-1" 表示函数返回所有元素,但如果想返回列表的前三个元素,只需将 "-1" 替换为 "2"。注意,这不是 "3",因为它将遍历到索引为三,并返回总共四个元素。

r.lrange('languages', 0, -1) r.lrange('languages', 0, 2)

输出结果分别为 ['javascript', 'C++', 'C++', 'C#', 'python'] 和 ['javascript', 'C++', 'C++']。

对于存储嵌套对象,可以使用 "hset" 函数,但它只允许一级嵌套。

r.hset('person', 'name', 'Ram') r.hget('person', 'name')

输出结果为 "Ram"。

如果想存储具有不同数据类型的深度嵌套对象,可以使用 json 或 pickle 等序列化技术。让通过一个例子来更好地理解这一点。

import json personal_information = { 'name': 'Rahul', 'age': 20, 'address': { 'house_no': 189, 'flat_name': 'Golden Flower', 'area': 'Guindy' }, 'languages_known': ['english', 'hindi', 'tamil'] } r.set('personal_information', json.dumps(personal_information))

要提取存储的信息,可以直接使用 "get" 函数,然后撤销 json 执行的字符串化。

json.loads(r.get('personal_information'))

输出结果为 {'name': 'Rahul', 'age': 20, 'address': {'house_no': 189, 'flat_name': 'Golden Flower', 'area': 'Guindy'}, 'languages_known': ['english', 'hindi', 'tamil']}。

由于 Redis 是一个内存数据存储,因此重要的是旧的键值对需要被删除或过期,以便为存储新数据腾出空间。为此,Redis 提供了键过期选项。让尝试存储一个带有过期时间的键值对。可以使用 "setex" 函数为键值对设置过期时间,它接受 TTL(以秒为单位)。如果想以毫秒为单位设置 TTL,可以使用 "psetex" 函数。

r.setex('lorem', 10, 'ipsum') # 10 秒 r.psetex('hello', 10, 'world') # 10 毫秒

要了解键还有多少时间过期,可以使用 "ttl" 函数,它将返回剩余时间(以秒为单位)。类似地,"pttl" 函数将返回相同的结果,但以毫秒为单位。如果键已过期,返回的值将是负数。

r.ttl('lorem') r.pttl('lorem')

输出结果分别为 2 和 -2。

如果想检查一个键是否已过期,可以使用 "exists" 函数,如果键可用,它将返回 1,如果已过期,则返回 0。

r.exists("lorem") r.exists("hello")

输出结果分别为 1 和 0。

r.delete('lorem')
  • 什么是 Redis?
  • 在 Windows 上安装 Docker
  • 在 Docker 容器中运行 Redis
  • 使用 redis-py 连接
  • 使用 redis-py 执行基本的 CRUD 操作
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485