python对redis的增删查改
python对redis的增删查改
- 安装 redis-py 库
- 连接 Redis 服务器
- 增
- 1. 字符串(String)
- 2. 列表(List)
- 3. 哈希(Hash)
- 4. 集合(Set)
- 5. 有序集合(Sorted Set)
- 删
- 1. 删除键
- 2. 从列表中删除元素
- 3. 从哈希中删除字段
- 4. 从集合中删除元素
- 5. 从有序集合中删除元素
- 查
- 1. 获取字符串
- 2. 获取列表
- 3. 获取哈希
- 4. 获取集合
- 5. 获取有序集合
- 改
- 1. 更新字符串
- 2. 更新列表
- 3. 更新哈希
- 4. 更新集合
- 5. 更新有序集合
- 完整示例
安装 redis-py 库
需要安装 redis-py 库,可以使用 pip 安装:
pip install redis
连接 Redis 服务器
在使用 redis-py 之前,需连接到 Redis 服务器,可使用 Redis 类来创建一个连接实例
import redis
# 创建连接
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
#r = redis.StrictRedis(host='localhost',port=6379)
增
1. 字符串(String)
# 设置一个键值对
r.set('key1', 'value1')
# 获取值
value = r.get('key1')
print(value) # Output: value1
2. 列表(List)
# 在列表的左侧插入值
r.lpush('list1', 'item1')
r.lpush('list1', 'item2')
# 在列表的右侧插入值
r.rpush('list1', 'item3')
# 获取列表的所有值
values = r.lrange('list1', 0, -1)
print(values) # Output: ['item2', 'item1', 'item3']
3. 哈希(Hash)
# 设置一个哈希的字段
r.hset('hash1', 'field1', 'value1')
r.hset('hash1', 'field2', 'value2')
# 获取哈希的所有字段和值
fields_values = r.hgetall('hash1')
print(fields_values) # Output: {'field1': 'value1', 'field2': 'value2'}
4. 集合(Set)
# 添加元素到集合
r.sadd('set1', 'item1')
r.sadd('set1', 'item2')
r.sadd('set1', 'item3')
# 获取集合的所有元素
members = r.smembers('set1')
print(members) # Output: {'item1', 'item2', 'item3'}
5. 有序集合(Sorted Set)
# 添加元素到有序集合
r.zadd('sorted_set1', {'item1': 1, 'item2': 2, 'item3': 3})
# 获取有序集合的所有元素
members_scores = r.zrange('sorted_set1', 0, -1, withscores=True)
print(members_scores) # Output: [('item1', 1.0), ('item2', 2.0), ('item3', 3.0)]
删
1. 删除键
# 删除键
r.delete('key1')
2. 从列表中删除元素
# 从列表中删除指定元素
r.lrem('list1', 0, 'item2')
3. 从哈希中删除字段
# 从哈希中删除字段
r.hdel('hash1', 'field1')
4. 从集合中删除元素
# 从集合中删除元素
r.srem('set1', 'item1')
5. 从有序集合中删除元素
# 从有序集合中删除元素
r.zrem('sorted_set1', 'item1')
查
1. 获取字符串
# 获取字符串值
value = r.get('key1')
print(value)
2. 获取列表
# 获取列表的所有值
values = r.lrange('list1', 0, -1)
print(values)
3. 获取哈希
# 获取哈希的所有字段和值
fields_values = r.hgetall('hash1')
print(fields_values)
4. 获取集合
# 获取集合的所有元素
members = r.smembers('set1')
print(members)
5. 获取有序集合
# 获取有序集合的所有元素
members_scores = r.zrange('sorted_set1', 0, -1, withscores=True)
print(members_scores)
改
1. 更新字符串
# 更新字符串值
r.set('key1', 'new_value')
value = r.get('key1')
print(value) # Output: new_value
2. 更新列表
# 在列表的右侧插入新值
r.rpush('list1', 'item4')
values = r.lrange('list1', 0, -1)
print(values) # Output: ['item2', 'item1', 'item3', 'item4']
3. 更新哈希
# 更新哈希的字段值
r.hset('hash1', 'field2', 'new_value2')
fields_values = r.hgetall('hash1')
print(fields_values) # Output: {'field2': 'new_value2'}
4. 更新集合
集合中的元素是唯一的,不能直接更新,如果需要更新,可以先删除再插入
# 删除元素后重新插入
r.srem('set1', 'item1')
r.sadd('set1', 'new_item1')
members = r.smembers('set1')
print(members) # Output: {'new_item1', 'item2', 'item3'}
5. 更新有序集合
有序集合中的元素也可以通过修改分数来更新
# 更新有序集合的分数
r.zadd('sorted_set1', {'item2': 4})
members_scores = r.zrange('sorted_set1', 0, -1, withscores=True)
print(members_scores) # Output: [('item1', 1.0), ('item3', 3.0), ('item2', 4.0)]
完整示例
import redis
# 创建连接
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
# 增
r.set('key1', 'value1')
r.lpush('list1', 'item1')
r.hset('hash1', 'field1', 'value1')
r.sadd('set1', 'item1')
r.zadd('sorted_set1', {'item1': 1})
# 查
print(r.get('key1')) # Output: value1
print(r.lrange('list1', 0, -1)) # Output: ['item1']
print(r.hgetall('hash1')) # Output: {'field1': 'value1'}
print(r.smembers('set1')) # Output: {'item1'}
print(r.zrange('sorted_set1', 0, -1, withscores=True)) # Output: [('item1', 1.0)]
# 改
r.set('key1', 'new_value1')
r.rpush('list1', 'item2')
r.hset('hash1', 'field1', 'new_value1')
r.srem('set1', 'item1')
r.sadd('set1', 'new_item1')
r.zadd('sorted_set1', {'item1': 2})
# 查
print(r.get('key1')) # Output: new_value1
print(r.lrange('list1', 0, -1)) # Output: ['item1', 'item2']
print(r.hgetall('hash1')) # Output: {'field1': 'new_value1'}
print(r.smembers('set1')) # Output: {'new_item1'}
print(r.zrange('sorted_set1', 0, -1, withscores=True)) # Output: [('item1', 2.0)]
# 删
r.delete('key1')
r.lrem('list1', 0, 'item1')
r.hdel('hash1', 'field1')
r.srem('set1', 'new_item1')
r.zrem('sorted_set1', 'item1')
# 查
print(r.get('key1')) # Output: None
print(r.lrange('list1', 0, -1)) # Output: ['item2']
print(r.hgetall('hash1')) # Output: {}
print(r.smembers('set1')) # Output: {}
print(r.zrange('sorted_set1', 0, -1, withscores=True)) # Output: []