如何在Django应用中使用Redis命令操作列表和集合

4 投票
2 回答
5442 浏览
提问于 2025-04-17 22:56

我正在开发一个Django应用,想用redis来做缓存。

我发现有一些包,比如django-redis和django-redis-cache,这些包可以和Django集成,方便我们使用redis。

不过,使用这些包的时候,你只能用到'get'和'set'这两个命令。

那么,像rpush、lrange、zadd这些其他的redis命令,怎么用呢?

我们能不能在上面提到的包(django-redis,django-redis-cache)中使用这些命令,还是说需要用redis-py这个客户端?

谢谢你的帮助!

2 个回答

6

使用原始客户端访问:

在某些情况下,你的应用需要直接访问原始的Redis客户端,以使用一些Django缓存接口没有提供的高级功能。

>>> from django_redis import get_redis_connection
>>> con = get_redis_connection("default")

现在我们可以执行Redis数据类型的原始命令:

  1. 列表
  2. 集合
  3. 有序集合
  4. 哈希等

示例:

将数据存储到Redis哈希中。

Redis哈希是字符串字段和字符串值之间的映射,因此它们是表示对象的完美数据类型。

# Create framework dictionary in python
>>> frameworks = {'python':'Django','php':'Laravel','java':'Spring'} 
#Store them into redis hash.  
>>> con.hmset('frameworks',frameworks)
True #successfully stored 

# retrieved number of items 
>>> con.hlen('frameworks') 
3

#Get all values
>>> con.hvals('frameworks')
[b'Django', b'Laravel', b'Spring']

在上述示例中使用的哈希命令:

  1. hmset:设置多个项目

  2. hlen:获取项目数量

  3. hvals:返回所有值

7

在django-redis中,你可以访问到原始的redis连接。我认为这让你可以通过redis-py来执行命令,而django-redis在后台就是用这个库的。

撰写回答