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
: 异步保存数据库