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

Redis入门1

1. Redis 是什么?

Redis是一个基于内存的 key-value 结构数据库。

  • 定义:Remote Dictionary Server,开源内存键值数据库,支持多种数据结构,读写性能 10w+ QPS。
  • 核心差异
    • 纯内存操作(可选持久化),传统 DB 纯磁盘。
    • 单线程处理命令(6.0 后 IO 多线程),无锁,避免上下文切换。
    • 支持丰富数据类型(String、List、Hash、Set、ZSet、Bitmap、HyperLogLog、Stream、Geo、Pub/Sub)。

2. 数据结构与典型命令

结构场景关键命令备注
String缓存、计数器SET k v, GET k, INCR k最大 512 MB
Hash对象缓存HSET user:1 name bob, HGETALL user:1field-value 上限 2³²-1
List消息队列、栈LPUSH q 1, BRPOP q 5双向链表,可阻塞
Set抽奖、去重SADD tag:redis user1, SRANDMEMBER tag:redis 3无序、交并差集
ZSet排行榜ZADD rank 100 alice, ZREVRANGE rank 0 9跳表 + 字典双结构
BitmapDAU 统计SETBIT dau:2025-08-17 12345 1, BITCOUNT dau:2025-08-171 bit 一位,省内存
HyperLogLogUVPFADD uv:2025-08-17 u1, PFCOUNT uv:2025-08-17误差 < 0.81%
Stream消息队列XADD mystream * f1 v1, XREAD BLOCK 0 STREAMS mystream $Kafka-like
Geo附近的人GEOADD locations 116.4 39.9 beijing, GEORADIUS locations 116 39 100 km基于 Sorted Set

常见面试题速记(从别处扒的)

  1. 单线程为何快?
    内存、IO 多路复用、避免上下文切换、无锁。
  2. 缓存雪崩、穿透、击穿?
    • 雪崩:大量 key 同时失效 → 加随机 TTL、互斥锁。
    • 穿透:查询不存在数据 → 布隆过滤器、空值缓存。
    • 击穿:热点 key 失效 → 互斥锁、永不过期 + 异步刷新。
  3. 分布式锁?
    SET key uuid NX PX 30000,解锁用 Lua 保证原子(if redis.call("get",KEYS[1])==ARGV[1] then return redis.call("del",KEYS[1]) else return 0 end)。
  4. 与 Memcached 对比?
    类型丰富、持久化、复制、Lua;Memcached 纯内存、多线程。

一条命令总结

redis-cli -h 127.0.0.1 -p 6379 --latency -i 1

实时看延迟,低于 1ms 说明健康。

Redis常用命令

String字符串操作命令

string存储的形式是这样子的

哈希操作命名

Redis hash 是一个string类型的 field 和 value 的映射表,hash特别适合用于存储对象,常用命令:

hash存储的形式是这样子的

hash数据类型

key建议写成heima:user:1有三个原因

首先: key不能重复,其次: 这样子表达图形化界面看起来很好看,容易分明不同的结构, 最后: 不止user还有dept之类的,易于区分

列表操作命名

Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令

通用命令

Redis的通用命令是不分数据类型的,都可以使用的命令:

http://www.dtcms.com/a/335498.html

相关文章:

  • 【Leetcode hot 100】189.轮转数组
  • 【C2000】C2000例程使用介绍
  • 24. 什么是不可变对象,好处是什么
  • Flink作业执行的第一步:DataFlow graph的构建
  • 一周学会Matplotlib3 Python 数据可视化-多子图及布局实现
  • 【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
  • Python可视化工具-Bokeh:动态显示数据
  • 【Golang】:错误处理
  • 10 SQL进阶-SQL优化(8.15)
  • 【Luogu】每日一题——Day21. P3556 [POI 2013] MOR-Tales of seafaring (图论)
  • 中国大学MOOC--C语言程序设计第十周字符串(下)
  • openEuler等Linux系统中如何复制移动硬盘的数据
  • HTTPS 配置与动态 Web 内容部署指南
  • Hadoop入门
  • SpringCloud 06 服务容错 Sentinel
  • NY270NY273美光固态闪存NY277NY287
  • 黎阳之光:以动态感知与 AI 深度赋能,引领电力智慧化转型新革命
  • mysql||事务相关知识
  • nertctl使用了解
  • Node.js导入MongoDB具体操作
  • IoT/HCIP实验-5/基于WIFI的智慧农业实验(LwM2M/CoAP+PSK+ESP8266 连接到 IoTDA)
  • python study notes[4]
  • Vue深入组件:Props 详解3
  • 【adb端口5555】烽火hg680-gy_烽火hg680-gc安卓9线刷烧录包 解决用一段时间就提示升级的问题
  • 回溯剪枝的 “减法艺术”:化解超时危机的 “救命稻草”(一)
  • 如何在 Ubuntu 24.04、22.04 或 20.04 Linux 中更改计算机名称
  • 智能化管理:开启海洋牧场新时代
  • 字节 Golang 大模型应用开发框架 Eino简介
  • Vue深入组件:Props 详解2
  • es7.17.x es服务yellow状态的排查查看节点,分片状态数量