关于Redis的一些常见基本操作 | 青训营

101 阅读3分钟

Redis基本数据类型与操作

Redis作为一个高性能的键值对(key-value)数据库,主要支持5种数据类型:字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)、哈希表(Hash)。

字符串(String):Redis字符串是简单的键值对,一个键对应一个值。常见的操作包括:

python

import redis

# 建立连接
redis_client = redis.Redis(host='localhost', port=6379)

# 存储字符串 
redis_client.set('name', 'zhangsan')

# 获取字符串
value = redis_client.get('name')
print(value) # 输出 'zhangsan'

列表(List):列表是简单的字符串列表,可以通过添加/删除元素等操作对列表进行编辑。

python

# 插入元素到列表头部
redis_client.lpush('mylist', 'hello')

# 插入元素到列表尾部
redis_client.rpush('mylist', 'world') 

# 获取列表中的元素
print(redis_client.lrange('mylist', 0, -1)) # 输出 ['hello', 'world']

集合(Set):集合是通过哈希表实现的,是一个无序且不重复的字符串集。常用操作有添加/删除/判断元素等。

python

# 添加元素到集合
redis_client.sadd('myset', 'a')
redis_client.sadd('myset', 'b')

# 判断元素是否在集合中
print(redis_client.sismember('myset', 'a')) # 输出 True

有序集合(Sorted Set):有序集合与集合不同的是,每个元素都会关联一个double类型的分数。允许通过分数来为集合中的元素进行从小到大的排序。

python

# 添加元素到有序集合并关联分数
redis_client.zadd('mysortedset', 1, 'a')  
redis_client.zadd('mysortedset', 2, 'b')

# 按分数从小到大排序取出元素
print(redis_client.zrange('mysortedset', 0, -1)) # 输出 ['a', 'b'] 

哈希表(Hash):哈希表存储键值对集合,通过一个字段来访问值。主要操作包括设置/获取哈希字段值。

python

# 设置哈希表字段值
redis_client.hset('myhash', 'field1', 'hello')

# 获取哈希表字段值
print(redis_client.hget('myhash', 'field1')) # 输出 'hello'

Redis持久化

Redis支持不同级别的 persistence 操作,分别为:

RDB(Redis DataBase)持久化 - 采用Dump文件形式,定期备份数据库状态到本地。通过redis-cli 命令 system SAVE 或配置文件的 save 参数触发。

python

redis_client.save() 

AOF(Append Only File)持久化 - 日志记录的形式,将客户端执行的每一条命令记录到AOF文件中,重启时直接执行AOF文件的内容来进行重放操作。可以通过redis-cli配置文件的appendonly参数开启。

主从复制 - 将一个Redis实例定义为主节点,其他Redis实例定义为从节点。主节点的数据及时同步到从节点上,实时备份和容灾。

python

# 设置主机
master_client.slaveof('192.168.1.100', 6379)

# 设置从机  
slave_client.slaveof('192.168.1.100', 6379)

Redis发布订阅功能

Redis的发布订阅(pub/sub)是一个中间件机制:发送者(发布者)发送消息,订阅者(Receiver)接收消息。

python

# 订阅频道
p = redis_client.pubsub()
p.subscribe('channel1', 'channel2')

# 发布消息
redis_client.publish('channel1', 'hello')

# 接收消息 
message = p.get_message()
print(message) # {'type': 'message', 'channel': b'channel1', 'data': b'hello'}

以上的部分示例代码展示了Redis的基本数据类型、持久化策略以及发布订阅功能等一系列相对常用操作的Python实现,文件注释对各操作进行了简短描述,有助于诸位理解和学习Redis的基本知识。