Redis 利用入门与进阶指南

打印 上一主题 下一主题

主题 971|帖子 971|积分 2923

Redis(Remote Dictionary Server)是一个高性能的开源内存数据存储系统,常被用作数据库、缓存和消息队列。它以速率快、支持多种数据结构和简朴易用而著称。本文将带你从 Redis 的基础用法开始,逐步深入到得当中级技能人员的现实应用场景。假如你是一个初学者或有一定经验的技能人员,这篇博客会帮助你更好地掌握 Redis。
什么是 Redis?

Redis 是一个键值对存储系统,但它不但仅是简朴的键值数据库。它支持丰富的数据结构(如字符串、哈希、列表、聚集和有序聚集等),并且数据存储在内存中,因此读写速率极快。Redis 还支持持久化、主从复制和集群功能,使其在生产环境中非常实用。
安装与启动

初级:快速上手

在 Linux 或 Mac 系统上,你可以通过以下命令快速安装 Redis:
  1. # Ubuntu 安装启动
  2. sudo apt update
  3. sudo apt install redis-server
  4. # 启动 Redis
  5. redis-server
  6. # Docker 安装启动
  7. docker pull redis
  8. docker run -d -p 6379:6379 --name my-redis redis
  9. docker exec -it container_id  /bin/sh
复制代码
安装完成后,你可以用 redis-cli

毗连到 Redis:
  1. redis-cli
复制代码
默认环境下,Redis 监听 localhost:6379。输入 PING,假如返回 PONG,说明 Redis 已成功运行。
基础操作

字符串(String)

字符串是 Redis 最基本的数据类型。以下是一些常用命令:
  1. # 设置键值对
  2. SET name "Alice"
  3. # 获取值
  4. GET name
  5. # 输出: "Alice"
  6. # 设置带过期时间(单位:秒)
  7. SETEX session_key 3600 "user123"
  8. # 自增(适用于计数器)
  9. INCR counter
  10. # 如果 counter 原值为 5,执行后返回 6
复制代码
适用场景:缓存用户信息、计数器(如文章浏览量)。
列表(List)

列表是一个有序的字符串聚集,得当实现队列或栈。
  1. # 从右侧添加元素
  2. RPUSH mylist "item1"
  3. RPUSH mylist "item2"
  4. # 从左侧弹出元素
  5. LPOP mylist
  6. # 输出: "item1"
  7. # 查看列表长度
  8. LLEN mylist
  9. # 输出: 1
复制代码
适用场景:任务队列、最新消息列表。
哈希(Hash)

哈希得当存储对象,比如用户信息。
  1. # 设置字段
  2. HSET user:1001 name "Bob" age "25"
  3. # 获取字段
  4. HGET user:1001 name
  5. # 输出: "Bob"
  6. # 获取所有字段
  7. HGETALL user:1001
复制代码
适用场景:存储结构化数据,如用户信息、配置项。
中级:进阶应用

缓存设计

Redis 最常见的用途是作为缓存,镌汰数据库压力。以下是一个简朴的缓存实现(以 Python 和 redis-py 为例):
  1. import redis
  2. # 连接 Redis
  3. r = redis.Redis(host='localhost', port=6379, decode_responses=True)
  4. def get_data(key):
  5.     # 先查缓存
  6.     cached = r.get(key)
  7.     if cached:
  8.         print("从缓存读取")
  9.         return cached
  10.     # 缓存未命中,从数据库查询
  11.     data = "从数据库查询的数据"  # 假设这是数据库返回结果
  12.     r.setex(key, 300, data)  # 缓存 5 分钟
  13.     print("从数据库读取并存入缓存")
  14.     return data
  15. print(get_data("user:1001"))
复制代码
留意事项

  • 设置公道的逾期时间,制止缓存占用过多内存。
  • 利用 EXISTS 查抄键是否存在,制止不必要的查询。
发布/订阅(Pub/Sub)

Redis 支持简朴的消息发布与订阅机制,得当及时关照。
  1. import redis
  2. # 订阅者
  3. def subscriber():
  4.     r = redis.Redis(host='localhost', port=6379, decode_responses=True)
  5.     pubsub = r.pubsub()
  6.     pubsub.subscribe("chat")
  7.     for message in pubsub.listen():
  8.         if message["type"] == "message":
  9.             print(f"收到消息: {message['data']}")
  10. # 发布者
  11. r = redis.Redis(host='localhost', port=6379, decode_responses=True)
  12. r.publish("chat", "Hello, everyone!")
复制代码
适用场景:及时谈天、变乱关照。
事务

Redis 提供 MULTI 和 EXEC 来实现简朴的事务,确保一组命令原子执行。
  1. # Redis CLI 示例
  2. MULTI
  3. SET key1 "value1"
  4. INCR counter
  5. EXEC
复制代码
留意:Redis 的事务不具备强一致性,仅保证命令按序执行。
性能与优化建议


  • 选择符合的数据结构:根据需求选择,比如用 SET 实现去重,用 ZSET 实现排行榜。
  • 内存管理:监控内存利用(INFO MEMORY),设置 maxmemory 限制,制止内存溢出。
  • 持久化:根据需求选择 RDB(快照)或 AOF(日记),或两者联合。
  • 毗连池:在生产环境中利用毗连池(如 Python 的 redis.ConnectionPool)提高性能。
常见题目与办理



  • Q:Redis 数据丢失怎么办? A:查抄持久化配置是否启用,是否因内存不足触发了镌汰战略(maxmemory-policy)。
  • Q:毗连超时怎么办? A:确认网络是否稳固,调整 timeout 参数,或利用毗连池。
结语

Redis 是一个功能强盛且灵活的工具。初学者可以通过掌握基本数据结构和命令快速上手,而中级用户可以通过缓存设计、Pub/Sub 和事务等特性办理现实题目。建议在实践中多尝试,联合具体业务场景调整利用方式。
   

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表