1.数据的流动
一条数据的流动从客户端出发,发送到服务器,再由服务器和数据库配合,完成相应的工作
一般来说哦数据库使用的是mysql,将数据储存在磁盘里,但是随着数据量的增多,暴露出来一个问题,mysql的加载速度过慢,因此人们考虑从内存中直接加载数据,redis就诞生了
2.redis是什么
上面已经简单说过redis的诞生过程,redis具体是什么?
其实Redis是一个使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它支持丰富的数据类型,包括字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(zset/sorted set)等,可以把redis理解为一个用内存的数据库
用内存有产生了一个问题,内存一重启就没了,要让数据持久化,依赖于redis的结构
AOF(Append Only File)文件是Redis持久化机制中的一种方式,用于将Redis服务器中的数据以追加的方式写入到磁盘中。
还有一个文件是RDB文件,存取redis的所有数据,先加载
他们各有优缺
AOF:
优点:数据安全性高,可以记录每个写操作;持久化能力强,可以通过重新执行AOF文件中的命令来恢复数据;可读性强,易于理解和操作。
缺点:AOF文件可能会很大,占用较多的磁盘空间;写入操作会引入额外的磁盘IO开销,可能会影响Redis服务器的性能。
RDB:
优点:RDB文件是二进制文件,比AOF文件更紧凑;生成RDB文件的速度比AOF重写快;RDB文件可以用于备份和灾难恢复。
缺点:RDB文件的生成是间隔性的,可能会存在一定的数据丢失风险;在数据恢复时,需要重新加载整个RDB文件,可能比AOF恢复慢。
3.redis中的string
redis中的string数据结构如上图所示
他主要有以下特点
二进制安全
Redis的String类型可以包含任何数据,包括jpg图片、序列化的对象等,因为Redis不会对字符串类型的值做任何解析,而是将其看作是一个字节数组。
这意味着Redis的String类型可以安全地存储二进制数据,不会出现数据损坏或乱码的情况。
最大容量:
Redis的String类型的值最大可以存储512MB的内容,这足以满足大多数应用场景的需求。
数据类型多样性:
Redis的String类型不仅可以存储普通的字符串,还可以存储整数和浮点数。这使得Redis的String类型在实际应用中具有更广泛的用途。
当修改为新的字符串,他会先考虑在当前容量上修改,不够才会扩容,很快
4.session和redis的关系
Session是一种服务器端的会话管理机制,它将用户的会话信息保存在服务器端。当用户与Web服务器进行交互时,服务器会为用户分配一个唯一的Session ID,并通过这个ID来识别和管理用户的会话信息。Session信息通常包括用户的登录状态、身份信息、会话变量等。
在Web开发中,一般选择使用Redis而不是MySQL来建立Session,主要是因为
在Web应用中,Session通常用于存储用户的登录状态、身份信息、会话变量等临时数据。这些数据需要频繁访问且对一致性要求较高。使用Redis来存储Session数据可以充分利用其内存存储和高并发读写能力的优势,提高系统的性能和稳定性。同时,Redis的持久化机制和高可用性特性也可以保证Session数据的可靠性和可用性。
这也直接体现了redis的优点
关于redis暂时先写这么多,实际内容还要很多,仍需继续学习