跟我学REDIS-REDIS(二)----常用数据类型之string

本文详细介绍了Redis中SET命令的使用及其与SETNX、SETEX、PSETEX命令的区别,并展示了Redis基本类型string的算术操作及MSET、MGET命令的用法。

首先启动Redis的client

$ redis-cli
1.字符串

 

set mykey somevalue
get mykey

在SET命令有许多可供选项,即修改命令的行为。可用SET命令选项的基本语法如下所示:
redis 127.0.0.1:6379> SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]
EX seconds - 设置指定的到期时间,单位为秒。
PX milliseconds - 设置指定到期时间,单位为毫秒。
NX - 只有设置键,如果它不存在。SET key value NX 效果等同于 SETNX key value
XX - 只有设置键,如果它已经存在。

因为 SET 命令可以通过参数来实现和 SETNX 、 SETEX 和 PSETEX 三个命令的效果,所以将来的 Redis 版本可能会废弃并最终移除 SETNX 、 SETEX 和 PSETEX 这三个命令。

string是Redis的基本类型,但也可以对其进行一些算术操作,例如加法:

> set counter 100
> incr counter
> incr counter
> incrby counter 58


Redis可以运用MSET and MGET 命令完成一次性的完成多个key-value的对应关系,使用MGET命令,Redis返回一个value数组。




<think>好的,用户让我详细讲解Redis。首先,我需要确定用户对Redis的了解程度。他可能是个开发者,或者刚开始学习后端技术。我需要从基础开始,确保他能跟上。 接下来,我应该考虑用户的需求。他可能想知道Redis是什么、为什么使用它,以及如何使用。可能的应用场景比如缓存、会话存储或者消息队列都是重点。 要分结构讲解。先介绍基本概念,然后特点,数据类型,持久化机制,高可用方案,应用场景,最后使用建议。这样逻辑清晰,用户容易理解。 需要注意Redis数据类型,比如String、Hash这些常用结构,还有持久化的RDB和AOF区别。用户可能对如何选择持久化方式有疑问,要解释清楚两者的优缺点。 高可用部分,主从复制、哨兵和集群的区别很重要。用户可能在生产环境中需要这些知识,所以要讲明白每种方案的适用场景。 应用场景部分,举实际例子,比如缓存雪崩的解决策略,这样用户能更好地理解如何应用Redis解决实际问题。 最后的使用建议,比如内存管理、避免大Key,这些是实际开发中的常见问题,用户可能会遇到,提前给出建议会有帮助。 需要检查技术术语是否有必要解释,比如“内存数据库”、“持久化”等,确保用户没有障碍。同时,保持语言简洁,避免冗长,重点突出。 可能用户需要实际操作示例,但问题中没有要求,所以暂时不深入代码,保持概述性质。如果有后续问题,可以再详细展开。 总结下来,结构大致分为七个部分,每个部分简明扼要,涵盖核心知识点,帮助用户全面了解Redis。</think>以下是对Redis的详细讲解,采用结构化方式呈现: ### **一、Redis基本概念** Redis(Remote Dictionary Server)是开源的**内存键值数据库**,由Salvatore Sanfilippo于2009年开发。采用C语言编写,支持网络交互,提供多种数据结构的持久化存储,单线程架构设计保障原子性操作。 **、核心特点** 1. **高性能** - 内存操作响应时间<1ms - 单机QPS可达10万+(简单命令) 2. **数据结构丰富** - 支持String、Hash、List、Set、ZSet、Bitmaps等 3. **持久化机制** - RDB快照(进制压缩存储) - AOF日志(记录写操作) 4. **高可用方案** - 主从复制 - Redis Sentinel(哨兵) - Redis Cluster(分片集群) 5. **扩展功能** - Lua脚本、事务、发布订阅、Stream消息队列 **三、数据结构详解** | 类型 | 特征 | 典型场景 | |-----------|-------------------------------|---------------------------| | String | 最大512MB,可存文本/进制 | 缓存、计数器 | | Hash | 字段值映射表 | 对象属性存储 | | List | 双向链表,支持阻塞操作 | 消息队列、最新消息排行 | | Set | 无序唯一集合 | 共同关注、抽奖 | | ZSet | 带权重的有序集合 | 排行榜、延迟队列 | | HyperLogLog | 基数统计(误差0.81%) | UV统计 | **四、持久化机制对比** ```markdown | 特性 | RDB | AOF | |-------------|------------------------------|------------------------------| | 存储方式 | 时间点快照 | 追加操作日志 | | 文件大小 | 较小(进制压缩) | 较大(文本命令) | | 恢复速度 | 快 | 慢 | | 数据安全 | 可能丢失最后一次保存后的数据 | 可配置同步频率(默认每秒) | | 适用场景 | 灾备恢复 | 高数据持久性要求 | ``` **五、高可用方案演进** 1. **主从复制** - 一主多从架构,异步数据同步 - 故障需手动切换 2. **Redis Sentinel** - 监控+自动故障转移 - 实现HA,但需客户端支持 3. **Redis Cluster** - 数据分片(16384 slots) - 自动重分片,节点间Gossip协议通信 **六、典型应用场景** 1. **缓存加速** - 缓存穿透:布隆过滤器 - 缓存雪崩:随机过期时间 - 缓存击穿:互斥锁 2. **会话存储** - 分布式Session管理 3. **实时排行榜** - ZSET实现分数排序 4. **分布式锁** - SETNX命令+过期时间 5. **消息队列** - Stream数据类型支持消费者组 **七、使用建议** 1. 内存规划不超过物理内存70% 2. 避免大Key(单个Value>1MB) 3. 生产环境推荐Cluster模式 4. 监控慢查询(`slowlog get`) 5. AOF重写期间预留足够磁盘空间 **学习路径建议**: 1. 掌握基础命令 → 2. 理解持久化机制 → 3. 部署集群 → 4. 研究源码(如事件循环ae.c) 是否需要针对某个技术点(如Redis事务、内存淘汰策略等)进行深入说明?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值