1 服务缓存
1.1 为什么有服务器缓存这个东西?
缓存机制主要的目的就是降低用户访问物理设备的频次.提供用户的查询的效率.
衍生: 可以利用缓存服务器有效的降低用户访问数据库的压力.
缓存数据存在于内存中。
1.2 搭建一个缓存服务器要考虑的要素
1.缓存用什么样的结构存储数据? K-V
2.缓存服务的开发用什么语言? C语言
3.缓存服务运行的环境? 让缓存服务运行在内存中。
4.缓存的数据都在内存中,万一断电,就将丢失。 要序列化(持久化到磁盘中)
5.内存大小有限,而缓存数据不断增多。总有一天内存会溢出。 要优化内存,定期清除不需要的内存。用(LRU算法/LFU算法)
1.3 最常用的数据库缓存系统----Redis
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
Redis支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
面试题: Redis支持5种数据类型.
速度快: 读 11.2万次/秒 写 8.6万次/秒 平均大约10万次/秒
Redis也可以看做一个数据库,它属于非关系型数据库(一维的,eg:properties文件中那样的)
关系型数据库是二维的:(有行和列) Mysql数据库就是关系型数据库
2 Redis安装
2.1 上传Redis (本次版本5.0.4,最新的版本已到6,但安装总是不成功)
2.2 解压Redis
2.3 编译安装Redis
1.执行编译操作 make
2.2.安装redis make install
2.4 修改redis配置文件
最开始 用命令 vim redis.conf 进入时,文件中是不显示行号的。
可以通过 :set nu 再回车 就显示行号了。
1.修改IP绑定
默认第69行 设置的是 127.0.0.1 。即只能本机连接,即自娱自乐。
而我现在的服务是 windows系统 去远程连接 linux系统。
所以要把这行注释掉。
2.关闭保护模式
相当于一个守卫。
就算redis数据库在权限方面都放开了。
但如果这个守卫是yes状态,别人还是无法访问redis数据库。
所以要改成no
3.开启后台运行
如果没开启 程序后台运行,那么一运行程序 ,就会像springboot那样,在控制台中打印logo和信息。并且下班后,终端一关,服务器就不工作了。
3 Redis常规命令
要求:进入redis根目录中执行.
特点:redis每次启动时都会读取配置文件. 如果需要准备多台redis则需要准备多个配置文件
1.启动命令 redis-server redis.conf
开启后台运行的效果
2.校验服务是否运行正常
3.进入redis客户端中
redis-cli -p 6379
跟mariaDB类似,Redis也有自己的客户端
注意:6379是redis默认的端口号,其实 -p 6379 可以省略不写。(但如果修改了redis的默认端口号,那这个端口号就不能省略不写了)
4.关闭Redis命令:
方式1. kill -9 PID号
方式2. redis-cli -p 6379 shutdown
4 Redis的16个库和Redis主机/从机的关系
当我在安装完Redis服务器后(比如:端口号为6381),会默认在6379中为我创建16个数据库,编号为0 到 15.
我如果不指定往6381redis服务器的哪个数据库中存的话,会默认往0号数据库存数据。
这16个数据库之间的数据是相互独立的。
当我人为指定跳转到6381redis服务器的1号数据库中时,想读取0号数据库中的数据,是读取不到的。
并且只有这16个数据库,当我想访问第17个数据库时,会报错。
如果我换一个redis服务器,比如6382,它又会为我创建16个数据库。以此类推。
而6381和6382可以是主从关系,但不影响它们每个人都拥有自己的16个数据库。