Redis学习-day01
-
Redis是什么,Redis属于什么类型的数据库?
Redis 是一个开源的内存数据库,使用 ANSI C 语言编写,遵守 BSD 协议。并且,Redis是一种基于内存K-V键值对的关系型数据库,属于NoSQL型关系数据库。
-
Redis解决了哪些问题?
Redis解决了传统数据库在高并发场景下产生的多次I/O操作,Redis 通过将数据存储在内存中,并采用单线程模型来处理客户端的请求,极大地提高了数据处理的速度。它能够支持每秒数十万次的读写操作,这使得它在处理高并发场景下表现出色。例如,在电商网站的秒杀活动中,Redis 可以用于缓存热门商品的信息,减少对数据库的直接访问,从而保证系统的稳定运行。极大的提升了查询的性能,并且还有哨兵模式、集群等功能。
-
MySQL和Redis有什么区别?
MySQL是传统的RDBMS型数据库,主要用于查找和写入等功能,Redis负责的是在数据查询之前,先查询Redis自己的数据库中是否有对应的数据,如果有对应的数据,那么就返回,如果没有就将请求发送给MySQL数据库,并且在本次请求中,将MySQL返回的数据存储到Redis自己的数据库中,方便下次查询。
-
Redis有什么特性?
- Redis提供了丰富的类型,拥有十种的类型,例如:String、Sets、List、Hash、Set、Sorted set(有序列表)、BitMap(位图)、HyperLogLog(基数统计)、GEO(地理空间)、Stream(流),能够适用于大多数业务场景。
- 高性能:
- 基于内存存储:Redis将数据存储在内存中,内存的读取数据远远大于硬盘中读取。
- 单线程模型:Redis使用单线程来处理所有客户端的请求,避免了多线程之间的上下文切换和竞争问题,同时简化了程序的设计和开发。由于采用了非阻塞的事件驱动机制,Redis能够有效的利用CPU资源,即使在高并发的情况下也能保持较高的性能。
- 高效的数据结构实现:Redis内部使用多种高效的数据结构来实现其丰富的数据类型,例如简单动态字符串(SDS)、压缩列表(ziplist)、跳表(skiplist)等。
- 持久化
- RDB(Redis DataBase)快照方式:在指定的时间间隔内,将内存中的数据集快照写入磁盘,生成一个dump.rdb文件。这种方式适合在对数据实时性要求不是特别高的场景下使用,优点是恢复数据的速度比较快,缺点是可能会丢失最近一次快照之后的数据。
- AOF(Append OnlyFile)日志方式:记录每一个写操作命令,并将其追加到AOF文件中。当服务器重启时,会通过重新执行AOF文件中的命令来恢复数据。AOF方式可以实现数据的更加长时间的持久化,但是,当文件过大时,恢复数据的速度就会较慢。
- 混合持久化:结合了RDB和AOF的优点,既保证了数据的持久化,又提高了恢复数据的速度。
- 分布式框架与高用性
- 主从复制:Redis支持主从复制模式,即一个master节点可以对应多个slave节点。master节点负责处理写请求,slave节点负责处理读请求,从而实现读写分离,提高系统的并发处理能力和数据的可靠性。并且当master节点出现故障时,可以将其中一个slave节点提升为master节点,保证了服务的持续可用。
- 哨兵模式(Sentinel):Sentinel是Redis的高可用的解决方案之一,它由一个或者多个Sentinel实例组成,用于监视Redis集群的状态,并且在发生故障时自动进行转移故障。
- 集群模式(Cluster):Redis集群是由多个Redis节点组成的分布式系统,可以进行自动的数据分片和复制。集群中每个节点都可以处理一部分请求,从而实现数据的水平和垂直扩展。Redis集群具有高可用性、可扩展性和容错性等特点,适用于大型的应用场景。
- 发布订阅机制:Redis提供了发布订阅功能,允许客户端之间通过消息队列进行通信。发布者将消息发送到一个或者多个频道(Channel),订阅者订阅感兴趣的频道并且接收消息。这种机制可以实现消息的异步处理和解耦,适用于实时聊天、消息推送、事件通知等场景。
- 事务支持:Redis支持事务操作,可以使用MULTI、EXEC、WATCH等命令来实现事务的开启、执行和提交。事务可以保证一系列命令的批量执行,并且在执行过程中不会被其他客户端的命令打断,确保数据的一致性和完整性。
- Lua脚本支持:Redis支持通过Lua脚本来实现一系列复杂的逻辑操作。在Redis中执行Lua脚本可以减少网络开销,提高执行效率,并且可以实现一些原子性的复杂操作。
- 丰富的命令和客户端支持:Redis 提供了丰富的命令用于操作各种数据类型,开发者可以通过命令行工具或者各种编程语言的客户端库来与 Redis 进行交互。目前,Redis 支持多种编程语言的客户端库,如 C、Java、Python、Node.js 等,方便开发者在不同的开发环境中使用 Redis。
-
Redis配置文件改写
- 学习环境:
-
CentOS 7
-
Redis 7.0.0
-
将 Redis7 安装包安装并且解压,并且将redis.conf文件复制到自己创建的目录中,并且改名为redis7.conf
-
打开配置文件修改参数:
-
使用命令:redis-server /myRedis/redis7.conf,启动Redis服务,并且使用redis7.conf配置文件
-
使用命令:redis-cli -a 123456 -p 6379 来连接Redis服务器,设置k-v然后读取,发现成功!
111