Redis
Redis 是一个开源的内存数据结构存储系统,通常被称为 NoSQL 数据库。以下是关于 Redis 的主要特点和用途:
- 内存数据存储:数据完全存储在内存中,这使得它能够提供极快的读写速度。
- 它支持多种不同类型的数据结构,如字符串、哈希表、列表、集合和有序集合等。
- 持久化:
- Redis 提供了两种持久化机制:快照(RDB)和日志(AOF)。
- 这些机制可以将内存中的数据定期保存到磁盘上,确保数据的持久性。
- 高性能:
- Redis 的内存数据存储模型和非阻塞 I/O 设计,使它能够提供毫秒级的响应时间。
- 它可以每秒处理数十万到数百万的请求,非常适合需要高吞吐量的应用程序。
- 多种用例:
- Redis 可以用作缓存系统、消息队列、状态管理器和实时应用程序的数据存储。
- 它还可以用于构建诸如计数器、排行榜和限流器等各种应用场景。
- 分布式和集群:
- Redis 支持主从复制和哨兵模式,可以实现高可用性和故障转移。
- 它还提供了集群模式,可以水平扩展存储容量和吞吐量。
- 丰富的生态系统:
- Redis 拥有大量的第三方库和工具,支持多种编程语言,如 Python、Java、Node.js 等。
- 这使得 Redis 可以与各种应用程序和框架无缝集成。
Redis 的主要使用场景包括:
- 缓存系统:用于缓存经常访问的数据,以提高应用程序的响应速度。
- 消息队列:作为异步任务处理和事件驱动型应用程序的消息队列中间件。
- 实时应用程序:用于存储和管理实时数据,如在线游戏排行榜、实时聊天和实时仪表板。
- 计数器和限流器:用于构建各种类型的计数器,如网站访问量统计和API限流。
- 分布式锁和状态管理:用于协调分布式系统中的并发访问和状态管理。
redis常用语法
- 键值操作
SET key value: 设置键值对GET key: 获取键对应的值DEL key: 删除指定的键EXPIRE key seconds: 设置键的过期时间
- 数据结构
- 字符串 (String)
APPEND key value: 将值追加到键的末尾INCR key: 将键的值递增 1DECR key: 将键的值递减 1
- 哈希 (Hash)
HSET key field value: 设置哈希表中的字段HGET key field: 获取哈希表中指定字段的值HDEL key field: 删除哈希表中的指定字段
- 列表 (List)
LPUSH key value1 [value2 ...]: 将一个或多个值推入列表的头部RPOP key: 移除并获取列表的最后一个元素LRANGE key start stop: 获取列表指定范围内的元素
- 集合 (Set)
SADD key member1 [member2 ...]: 将一个或多个成员添加到集合中SREM key member1 [member2 ...]: 从集合中移除一个或多个成员SMEMBERS key: 返回集合中的所有成员
- 有序集合 (Sorted Set)
ZADD key score1 member1 [score2 member2 ...]: 将一个或多个成员添加到有序集合中ZRANGE key start stop [WITHSCORES]: 返回有序集合中指定区间内的成员ZREM key member1 [member2 ...]: 从有序集合中移除一个或多个成员
- 字符串 (String)
- 事务和锁
MULTI: 开始事务EXEC: 执行事务中的所有命令DISCARD: 放弃事务WATCH key [key ...]: 监视一个(或多个) key,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断
- 发布/订阅
PUBLISH channel message: 将信息发布到指定的频道SUBSCRIBE channel [channel ...]: 订阅一个或多个频道
- 持久化
SAVE: 同步保存数据库BGSAVE: 异步保存数据库