当前位置: 首页 > news >正文

Redis 小记

Redis 命令小记

Redis 是一个文本/二进制数据库(textual/binary database)

CLI 命令

redis-cli, redis-server, redis-benchmark, redis-check-dump, redis-check-aof

  • redis-cli 执行命令
# 方式 1
redis-cli -h 127.0.0.1 -p 6379
> 127.0.0.1:6379> PING
# 方式 2 (紧接命令, 默认数据 0)
redis-cli SET mykey "Hello, Redis!"
redis-cli GET mykey
  • redis-server 和 shell工具
# 启动 Redis 服务器 
redis-server /path/to/redis.conf
# 测试 Redis 性能
redis-benchmark -n 10000 -c 50
# 检查 RDB 文件(Redis 数据库文件)是否有效
redis-check-dump dump.rdb
# 检查 AOF 文件(Append-Only File)是否有效 (--fix 检查并修复)
redis-check-aof --fix mydata.aof
  • redis-benchmark 结果查看
> redis-benchmark -n 10000 -c 50
====== 标题 (数据结构) ======10000 requests completed in 1.01 seconds  # 发送了 10,000 个请求, 请求完成的时间 1.01 秒50 parallel clients # 表示同时有 50 个客户端在发起请求3 bytes payload # 表示每个请求的负载大小keep alive: 199.65% <= 1 milliseconds # 表示 99.65% 的请求在 1 毫秒内完成。(大多数请求的性能)
99.92% <= 2 milliseconds # 表示 99.92% 的请求在 2 毫秒内完成。(大多数请求的性能)
100.00% <= 2 milliseconds # 表示所有请求都在 2 毫秒内完成。(所有请求的响应时间, 最后一个百分比含义不一样)
57142.86 requests per second # 表示 Redis 每秒能够处理约 57,143 个请求

更低的响应时间和高并发处理能力通常意味着 Redis 的性能良好。

基本数据类型

Redis 5 种常用数据类型,包括字符串、哈希表、列表、集合和有序集合

  • 字符串: 简单数据。
  • 哈希: 存储对象。
  • 列表: 有序集合。
  • 集合: 不重复元素集合。
  • 有序集合: 具有分数的元素集合。

数据库清空命令

  • FLUSHDB:清空当前数据库的所有键
  • FLUSHALL:清空所有数据库的所有键

说明:

  • FLUSH 意味着"清空"或"冲洗",用于移除内存中的所有数据
  • DROP: 可能会引起误解,认为是删除整个数据库而不仅是清空。
  • DELETE ALL: 可能会被理解为逐条删除所有数据,而 FLUSHDB 则明确表示一次性清空
  • TRUNCATE: 强调的是清空数据而保留结构,用于关系型数据库表

Redis 是一个键值存储内存数据库,FLUSH 更符合 Redis 的设计理念, 强调快速清空。

基本操作命令

键值检查

KEYS pattern    # 查找匹配模式的键
EXISTS key      # 检查键是否存在
ping            # 检查服务器连接
info            # 获取服务器信息
TYPE key        # 获取键的数据类型
DEL key         # 删除指定键

数据类型操作

字符串操作

SET key value   # 设置字符串值
GET key         # 获取字符串值
INCR key        # 将值加1

哈希表操作

HSET key field value   # 设置哈希表字段的值
HGET key field         # 获取哈希表字段的值
HGETALL key           # 获取哈希表所有字段和值

列表操作

LPUSH mylist value    # 将值插入列表头部
LRANGE mylist 0 -1    # 获取列表所有元素
LPOP mylist           # 移除并返回列表第一个元素

集合操作

SADD myset member     # 添加集合成员
SMEMBERS myset        # 获取集合所有成员
SISMEMBER myset member # 判断元素是否为集合成员

有序集合操作

ZADD myzset score member    # 添加成员到有序集合
ZRANGE myzset 0 -1         # 获取有序集合所有成员
ZREM myzset member         # 移除有序集合成员

高级特性

事务操作

MULTI     # 开始事务
EXEC      # 提交事务
DISCARD   # 回滚事务

示例:

# 提交
MULTI
HSET user:1001 name "张三" age 30 email "zhangsan@example.com"
HSET user:1002 name "李四" age 28 email "lisi@example.com"
EXEC
# 回滚
MULTI
LPUSH orders:pending "订单ID:20230901 金额:299.00"
SADD users:active 1001 1002
ZADD orders:timestamps 1661980800 "2023-09-01T08:00:00"
DISCARD

发布/订阅

PUBLISH channel message    # 发送消息
SUBSCRIBE channel         # 订阅频道

键过期

EXPIRE key seconds    # 设置键过期时间
TTL key               # 获取键剩余生存时间

数据库遍历

SCAN cursor    # 迭代遍历数据库中的键
SCAN 0 MATCH *key
SCAN 0 COUNT 10

相关文章:

  • Cursor + Figma-Context-MCP ,让 Cursor 获取 Figma 设计图信息,实现 AI 生成页面的高度还原
  • 【3分钟准备前端面试】Hybrid开发 谷歌浏览器调试安卓app
  • ViTa-Zero:零样本视觉触觉目标 6D 姿态估计
  • 深入解析 Babylon.js 中的 TransformNode.lookAt 方法
  • 【Unity】 Dropdown默认选择不选择任何选项
  • 怎么把Ubuntu系统虚拟环境中启动命令做成系统服务可以后台运行?
  • 【“星瑞” O6 评测】 — llm CPU部署对比高通骁龙CPU
  • Flutter 学习之旅 之 flutter 作为 module ,在 Android 端主动唤起 Flutter 开发的界面 简单的整理
  • DBeaver CE 24.1.3 (Windows 64位) 详细安装教程
  • .net 常用
  • 基于C++实现人工智能—五子棋的目标识别
  • Google在架ab包分析-巴西
  • 阿里云服务器dns怎么修改服务器地址?服务器dns怎么设置??
  • MTK Android12-13 App卸载加锁
  • 基于 Java 的实现前端组装查询语句,后端直接执行查询方案,涵盖前端和后端的设计思路
  • 如何搭建spark yarn 模式的集群集群
  • java 和 C#操作数据库对比
  • Web基础和HTTP协议
  • kvm学习小结
  • 计算机视觉——通过 OWL-ViT 实现开放词汇对象检测
  • 湖州通告13批次不合格食品,盒马1批次多宝鱼甲硝唑超标
  • 演员孙俪:中年人没有脆弱的时间,学习胡曼黎不内耗
  • 马上评|起名“朱雀玄武敕令”?姓名权别滥用
  • 一周文化讲座|“不一样的社会观察”
  • 机票搜索热度飙升,透过数据看五一假期旅游热度
  • 新华视点丨广西抗旱一线调查