Redis 是一款高性能的键值存储数据库,广泛应用于 Web 开发中,尤其擅长处理高并发和大规模数据。Redis 支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合等,本文将详细介绍 Redis 的各种数据结构及其使用方法。
字符串
字符串是 Redis 中最基本的数据结构,它可以存储任何类型的数据,如数字、文本、二进制数据等。字符串的最大长度为 512 MB。
常用命令
- SET key value:设置指定 key 的值。
- GET key:获取指定 key 的值。
- INCR key:将指定 key 的值加一。
- DECR key:将指定 key 的值减一。
- APPEND key value:将指定值追加到 key 的末尾。
- STRLEN key:获取指定 key 的值的长度。
示例代码
// www.javascriptcn.com code example
import redis
# 连接 Redis 数据库
r = redis.Redis(host='localhost', port=6379, db=0)
# 设置字符串
r.set('name', 'Tom')
# 获取字符串
name = r.get('name')
print(name)
# 自增
r.incr('count')
# 追加字符串
r.append('name', ' is a boy')
# 获取字符串长度
length = r.strlen('name')
print(length)哈希表
哈希表是一种键值对集合,其中的 key 和 value 都是字符串类型。哈希表适合存储对象,可以将一个对象存储为一个哈希表,每个属性对应一个键值对。
常用命令
- HSET key field value:设置指定哈希表 key 中的一个字段的值。
- HGET key field:获取指定哈希表 key 中的一个字段的值。
- HGETALL key:获取指定哈希表 key 中的所有字段和值。
- HDEL key field [field ...]:删除指定哈希表 key 中的一个或多个字段。
- HEXISTS key field:判断指定哈希表 key 中是否存在指定字段。
示例代码
// www.javascriptcn.com code example
import redis
# 连接 Redis 数据库
r = redis.Redis(host='localhost', port=6379, db=0)
# 设置哈希表
r.hset('user:1', 'name', 'Tom')
r.hset('user:1', 'age', 18)
# 获取哈希表
name = r.hget('user:1', 'name')
age = r.hget('user:1', 'age')
print(name, age)
# 获取所有字段和值
user = r.hgetall('user:1')
print(user)
# 删除字段
r.hdel('user:1', 'age')
# 判断字段是否存在
if r.hexists('user:1', 'age'):
print('字段 age 存在')
else:
print('字段 age 不存在')列表
列表是一种有序集合,其中的元素可以重复。列表适合存储一组相同类型的数据,如日志、消息队列等。
常用命令
- LPUSH key value [value ...]:将一个或多个值插入到列表头部。
- RPUSH key value [value ...]:将一个或多个值插入到列表尾部。
- LPOP key:移除并返回列表的第一个元素。
- RPOP key:移除并返回列表的最后一个元素。
- LRANGE key start stop:获取列表指定范围内的元素。
示例代码
// www.javascriptcn.com code example
import redis
# 连接 Redis 数据库
r = redis.Redis(host='localhost', port=6379, db=0)
# 插入列表
r.lpush('log', 'message1')
r.lpush('log', 'message2')
r.lpush('log', 'message3')
# 获取列表
log = r.lrange('log', 0, -1)
print(log)
# 移除元素
r.lpop('log')
# 获取列表
log = r.lrange('log', 0, -1)
print(log)集合
集合是一种无序集合,其中的元素不可重复。集合适合存储一组唯一的数据,如标签、关键词等。
常用命令
- SADD key member [member ...]:向集合添加一个或多个成员。
- SMEMBERS key:返回集合中的所有成员。
- SISMEMBER key member:判断成员是否是集合的成员。
- SREM key member [member ...]:移除集合中的一个或多个成员。
示例代码
// www.javascriptcn.com code example
import redis
# 连接 Redis 数据库
r = redis.Redis(host='localhost', port=6379, db=0)
# 添加成员
r.sadd('tags', 'python')
r.sadd('tags', 'redis')
r.sadd('tags', 'web')
# 获取所有成员
tags = r.smembers('tags')
print(tags)
# 判断成员是否存在
if r.sismember('tags', 'python'):
print('成员 python 存在')
else:
print('成员 python 不存在')
# 移除成员
r.srem('tags', 'web')
# 获取所有成员
tags = r.smembers('tags')
print(tags)有序集合
有序集合是一种有序集合,其中的元素不可重复,每个元素都会关联一个分值。有序集合适合存储一组有序的数据,如排行榜、评分等。
常用命令
- ZADD key score member [score member ...]:向有序集合添加一个或多个成员。
- ZRANGE key start stop [WITHSCORES]:返回有序集合中指定范围内的成员。
- ZSCORE key member:返回有序集合中指定成员的分值。
- ZREM key member [member ...]:移除有序集合中的一个或多个成员。
示例代码
// www.javascriptcn.com code example
import redis
# 连接 Redis 数据库
r = redis.Redis(host='localhost', port=6379, db=0)
# 添加成员
r.zadd('rank', {'Tom': 100, 'Jerry': 90, 'Lucy': 80})
# 获取成员
rank = r.zrange('rank', 0, -1, withscores=True)
print(rank)
# 获取成员的分值
score = r.zscore('rank', 'Tom')
print(score)
# 移除成员
r.zrem('rank', 'Lucy')
# 获取成员
rank = r.zrange('rank', 0, -1, withscores=True)
print(rank)以上是 Redis 的常用数据结构及其使用方法,希望能对大家的学习和工作有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d52cc3a941bf713498ed99