1. 简介
Redis是一种开源的内存数据结构存储库,它支持多种数据结构,例如字符串、哈希、列表、集合等等。它能够执行原子操作,也就是这些操作只要么全部执行成功,要么一点都不执行。Redis能够被用于缓存、消息代理、高速队列等等。
2. 安装Redis
在开始Python操作Redis数据库之前,我们需要先安装Redis,以下是Ubuntu系统下安装Redis的步骤:
2.1 使用apt-get命令安装Redis:
$ sudo apt-get update
$ sudo apt-get install redis-server
安装完毕后就能够使用Redis了。
3. Python Redis包的安装
Python是一种高级编程语言,它提供了多个Redis包。在这里我们将使用Redis Py包。该包可以通过pip命令安装。
$ pip install redis
4. Python操作Redis数据库
4.1 连接Redis数据库
在Python操作Redis数据库之前,我们需要首先导入redis模块,然后连接Redis数据库。
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
这里,我们使用Redis()初始化扩展的客户端实例,并指定Redis数据库的主机、端口以及数据库编号。
host:主机名,默认是127.0.0.1
port:端口号,默认使用6379
db:要连接的数据库号码,默认为0
4.2 数据类型
Redis支持多种数据结构,包括字符串、哈希、列表、集合、有序集合。
4.2.1 字符串
Redis字符串是一个简单的键值对的数据结构。
4.2.1.1 字符串的写入和读取
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('name', 'John')
print(r.get('name'))
这里,我们通过Redis实例的set()方法向Redis数据库中写入了一个键值对。对于键'name',其对应的值为'John'。然后,通过调用get()方法获取键值对,最终输出'John'到控制台。
4.2.1.2 键值的删除
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('name', 'John')
r.delete('name')
这里,我们调用了delete()方法来删除Redis数据库中的一个键。
4.2.1.3 字符串拼接
在Redis中,我们可以使用append()方法向一个键的值中追加字符串。
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('name', 'John')
r.append('name', ' Doe')
print(r.get('name'))
这里,我们给键'name'的值追加了一个空格后再追加'Doe'字符串。最终输出'John Doe'到控制台。
4.2.2 列表(List)
Redis列表是一组有序的元素。
4.2.2.1 列表的写入和读取
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.lpush('list', 'a', 'b', 'c')
print(r.lrange('list', 0, -1))
这里,我们通过Redis实例的lpush()方法向Redis数据库中的列表'list'中插入了字符串'a'、'b'、'c'。
然后,通过调用lrange()方法,获取列表'list'的所有元素,并输出到控制台。
4.2.2.2 列表元素的删除
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.lpush('list', 'a', 'b', 'c')
r.lpop('list')
这里,我们调用了lpop()方法来删除列表'list'的最左端元素。
4.2.2.3 列表元素的自增和自减
在Redis中,我们可以使用incr和decr方法将列表元素自增或自减。
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.lpush('list', 1, 2, 3)
r.incr('list', 2, 1)
print(r.lrange('list', 0, -1))
这里,我们使用lpush()方法向Redis数据库中存储列表'list'。然后,我们将列表中下标为2的元素自增1,并输出整个列表。
4.2.3 哈希(Hash)
Redis哈希是一个字符串字段和一个对应值相关联的映射表。哈希通常用来存储对象(比如,用户)的信息。
4.2.3.1 哈希的写入和读取
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.hset('hash', 'name', 'John')
r.hset('hash', 'age', '20')
print(r.hgetall('hash'))
这里,我们通过调用hset()方法向Redis数据库中的哈希'hash'存储了两个键值对。键值对'('name', 'John')'和键值对('age', '20')。同时,通过调用hgetall()方法获取哈希'hash'的所有键值对,并输出到控制台。
4.2.3.2 哈希元素的删除
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.hset('hash', 'name', 'John')
r.hdel('hash', 'name')
这里,我们通过调用hdel()方法删除了哈希'hash'中的键'name'。
4.2.3.3 哈希元素的自增和自减
在Redis中,我们可以使用hincrby()方法自增哈希中的值。
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.hset('hash', 'age', 20)
r.hincrby('hash', 'age', 1)
print(r.hgetall('hash'))
这里,我们使用hincrby()方法将哈希'hash'中的键'age'的值自增1。最终输出所有的键值对到控制台。
4.2.4 集合(Set)
Redis集合是一组唯一的、无序的元素的集合。
4.2.4.1 集合的写入和读取
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.sadd('set', 'a', 'b', 'c', 'c')
print(r.smembers('set'))
这里,我们使用sadd()方法向Redis数据库中的集合'set'中插入了'a'、'b'、'c'、'c'。然后,通过调用smembers()方法获取集合中的所有元素,并输出到控制台。请注意,集合中不允许存在重复元素。
4.2.4.2 集合元素的删除
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.sadd('set', 'a', 'b', 'c')
r.srem('set', 'a')
这里,我们使用srem()方法删除了集合'set'中的元素'a'。
4.2.4.3 集合的交集、并集和差集
Redis还提供了sinter()、sunion()和sdiff()方法来计算两个集合的交集、并集和差集。
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.sadd('set1', 'a', 'b', 'c', 'd')
r.sadd('set2', 'c', 'd', 'e', 'f')
print(r.sinter('set1', 'set2'))
print(r.sunion('set1', 'set2'))
print(r.sdiff('set1', 'set2'))
这里,我们使用了sadd()方法设置了两个集合'set1'和'set2'。通过调用sinter()、sunion()和sdiff()方法计算不同集合之间的交集、并集和差集。
4.2.5 有序集合(Sorted Set)
Redis有序集合是一组唯一的、有序的元素的集合。
4.2.5.1 有序集合的写入和读取
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.zadd('zset', {'a': 1, 'b': 2, 'c': 3})
print(r.zrange('zset', 0, -1, withscores=True))
这里,我们使用zadd()方法向Redis数据库中的有序集合中插入了一组'('a', 1)'、'('b', 2)'、'('c', 3)'键值对。
然后,使用zrange()方法获取有序集合'zset'中的所有元素和它们的分数,并输出到控制台。
4.2.5.2 有序集合元素的删除
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.zadd('zset', {'a': 1, 'b': 2, 'c': 3})
r.zrem('zset', 'a')
这里,我们使用了zrem()方法删除了有序集合'zset'中的元素'a'。
以上就是Python操作Redis数据库的方法,通过这些方法,我们可以轻松地向Redis数据库中存储和获取数据。