Redis 基础知识教程:
目录:
-
Redis 简介
-
安装和配置
-
数据类型和命令
-
持久化
-
主从复制和哨兵
-
集群
-
Redis 简介
Redis 是一种高性能的 NoSQL 数据库,它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合。Redis 还提供了一些高级功能,如发布/订阅、事务和 Lua 脚本执行。Redis 的内存存储和快速数据访问使其在需要快速读写操作的应用中非常有用。
- 安装和配置
安装 Redis 通常需要从官方网站下载并编译源代码。也可以使用一些包管理器,如 apt-get(Ubuntu)或 yum(CentOS)来安装 Redis。
安装 Redis 后,可以通过修改配置文件来配置 Redis 实例。配置文件包含了 Redis 的各种设置,如监听端口、内存使用限制和持久化选项。
- 数据类型和命令
Redis 支持多种数据类型和相应的命令,如下所示:
- 字符串:SET、GET、INCR、DECR、APPEND、GETSET 等。
- 哈希:HSET、HGET、HINCRBY、HDEL、HKEYS、HVALS 等。
- 列表:LPUSH、RPUSH、LPOP、RPOP、LINDEX、LLEN 等。
- 集合:SADD、SREM、SMEMBERS、SISMEMBER、SCARD 等。
- 有序集合:ZADD、ZRANGE、ZREM、ZINCRBY、ZCARD 等。
除此之外,Redis 还提供了一些高级功能,如发布/订阅、事务和 Lua 脚本执行。
- 持久化
Redis 支持两种持久化方式:快照(RDB)和追加式文件(AOF)。
RDB 持久化方式将 Redis 数据库的快照写入磁盘。这种方式的优点是快速且占用的空间较小。AOF 持久化方式则是记录每次写操作,以便在重启时重放这些操作,从而重建 Redis 数据库。这种方式的优点是更可靠,但会占用更多的磁盘空间。
- 主从复制和哨兵
Redis 支持主从复制,其中一个 Redis 服务器(主服务器)可以将数据同步到多个从服务器。主从复制的优点是可以提高读取性能和故障恢复能力。
Redis 还提供了一个称为哨兵的功能,它监控 Redis 主从复制的状态并在主服务器故障时自动切换到从
1. MongoDB 简介
MongoDB 是一个高性能、面向文档的 NoSQL 数据库,它将数据存储为 BSON(一种类似于 JSON 的二进制格式)文档。与传统的关系型数据库不同,MongoDB 不需要固定的表结构,数据可以按照自己的需求灵活存储,更易于扩展和迭代。
MongoDB 的特点如下:
- 面向文档:MongoDB 将数据存储为文档,而不是表,文档是一种类似于 JSON 的结构,可以嵌套其他文档或数组。文档是 MongoDB 中最基本的数据单元,一个文档就相当于一个对象,它包含了多个键值对,这些键值对称为字段。
- 动态模式:MongoDB 不需要预定义数据模式,你可以根据需要动态地改变数据结构,这种灵活性使得 MongoDB 更适合于敏捷开发和快速迭代。
- 支持索引:MongoDB 支持多种类型的索引,包括单键、复合、地理空间和全文索引。
- 高性能:MongoDB 采用内存映射存储引擎,可以将磁盘上的数据映射到内存中进行操作,这样可以提高查询效率和吞吐量。
- 分布式:MongoDB 支持分片(sharding)和复制(replication),可以构建高可用、高可扩展的分布式数据库系统。
2. 安装 MongoDB
2.1 Ubuntu 安装 MongoDB
在 Ubuntu 系统上,可以使用 apt-get 命令来安装 MongoDB:
sudo apt-get update
sudo apt-get install mongodb
安装完成后,使用以下命令来启动 MongoDB 服务:
sqlCopy code
sudo systemctl start mongodb
可以使用以下命令检查 MongoDB 是否已经启动:
luaCopy code
sudo systemctl status mongodb
如果 MongoDB 启动成功,将会输出如下信息:
● mongodb.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-04-03 08:57:18 UTC; 1min 30s ago
Docs: https://docs.mongodb.org/manual
Main PID: 1234 (mongod)
Tasks: 23 (limit: 1162)
Memory: 143.8M
CGroup: /system.slice/mongodb.service
└─1234 /usr/bin/mongod --config /etc/mongodb.conf
2.2 macOS 安装 MongoDB
在 macOS 上,可以使用 Homebrew 包管理器来安装 MongoDB:
Copy code
brew install mongodb
安装完成后,使用以下命令来启动 MongoDB 服务:
sqlCopy code
brew services start mongodb
当Redis作为缓存使用时,我们需要考虑如何进行缓存失效的处理,以保证数据的准确性。在Redis中,缓存失效有两种主要的方式:过期时间(Expiration)和惰性删除(Eviction)。
过期时间是Redis中最常用的一种缓存失效方式。可以通过给Redis中的键设置过期时间,在到达过期时间后,Redis会自动将该键删除。在Redis中设置过期时间的方法有两种:
-
使用EXPIRE命令
EXPIRE key seconds
该命令可以为指定的key设置过期时间,单位是秒。
例如,为名为"mykey"的键设置10秒的过期时间:
EXPIRE mykey 10
-
使用SET命令的EX参数
SET key value EX seconds
该命令可以为指定的key设置值和过期时间。
例如,为名为"mykey"的键设置值为"value",并设置10秒的过期时间:
SET mykey value EX 10
惰性删除是Redis中一种比较特殊的缓存失效方式,它并不直接删除已经失效的键,而是在键被访问时进行检查,如果发现该键已经失效,则进行删除。惰性删除可以更加高效地利用Redis中的内存,但是也可能导致内存占用过高的问题。
在Redis中,惰性删除的实现依赖于两个参数:maxmemory和maxmemory-policy。
-
maxmemory
maxmemory表示Redis中最大使用的内存大小。当Redis中的内存使用达到了这个阈值时,Redis会启动惰性删除策略。
-
maxmemory-policy
maxmemory-policy表示Redis中的缓存淘汰策略。在Redis中,有以下几种缓存淘汰策略:
- noeviction:不进行任何缓存淘汰操作,当内存使用达到maxmemory时,Redis会拒绝写入操作。
- allkeys-lru:使用LRU算法进行缓存淘汰。
- allkeys-lfu:使用LFU算法进行缓存淘汰。
- allkeys-random:随机选择一个缓存进行淘汰。
- volatile-lru:只对设置了过期时间的键进行LRU缓存淘汰。
- volatile-lfu:只对设置了过期时间的键进行LFU缓存淘汰。
- volatile-random:只对设置了过期时间的键进行随机淘汰。
例如,将maxmemory设置为1GB,并使用allkeys-lru作为缓存淘汰策略:
bashCopy code
# 在redis.conf中添加如下配置: maxmemory 1gb maxmemory-policy allkeys-lru
以上就是Redis中缓存失效的两种方式:过期时间和惰性删除,以及Redis中的缓存淘汰策略