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: 将键的值递增 1
- DECR 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: 异步保存数据库