1、Redis介绍
什么是缓存
举例:张三从浏览器查询数据,李四查询相同的数据,浏览器还需要重复获取,缓存的作用是,张三查询完数据后,数据保留在缓存里,李四查询的时候,直接从缓存里获取,快速而且降低浏览器压力
2、为什么要使用 noSql数据库
2.1、无法应对每秒上万次的读写请求,硬盘IO此时也将变为性能瓶颈
2.2、表中存储记录数量有限,横向可扩展能力有限,纵向数据可承受能力也是有限的,面对海量数据,势必涉及到分库分表,难以维护
大数据查询SQL效率极低,数据量到达一定程度时,查询时间会呈指数级别增长
2.3、难以横向扩展,无法简单地通过增加硬件、服务节点来提高系统性能对于需要24小时不间断提供服务的网站来说,数据库升级、扩展将是一件十分麻烦的事,往往需要停机维护,数据迁移,为了避免服务间断,如果网站使用服务器集群,则根据集群策略,需要相应的考虑主从一致性、集群扩展性等一系列问题
3、NoSQL数据库的优点:
非关系型数据库,不仅仅是sql
nosql = not only sql
3.1、海量数据下,读写性能优异
3.2、数据模型灵活
3.3、数据间无关系,易于扩展
4、NoSQL数据库分类:
4.1、键值存储数据库
代表数据库:Redis
适用场景:会话信息,用户配置信息,购物车
4.2、列存储数据库
代表数据库:BigTable,Cassandra,HBase
适用场景:事件记录,内容管理,博客平台
不适合需要ACID事务的场合
4.3、文档型数据库(bson格式,和json一样)
代表数据库:MongoDB
适用场景:事件记录,内容管理,博客平台,网站分析,实时分析,电子商务应用
4.4、图数据库:可以使用图结构相关算法,比如最短路径寻址
代表数据库:Neo4j
适用场景:社交网络,推荐引擎,基于位置的服务
2、Redis安装
数据库查询网址:https://db-engines.com/en/
Redis中文官网文档: http://www.redis.cn/
Redis 6.0.10 is the latest stable version,点击下载
Lunix下安装redis
1、下载安装包
https://redis.io/
2、解压redis安装包
程序一般放在opt目录下
3、进入解压后的文件
cd /opt/redis-6.0.9
cd redis-6.0.9
4、基本的环境安装
#安装c++编译工具,因为redis是c++写的,在进入redis文件中安装
yum install gcc-c++
#,安装完成,输入make命令
make
make install
报错总结:
#出现以下报错,是因为gcc版本原因导致
server.c:5170:31: error: ‘struct redisServer’ has no member named ‘server_cpulist’
redisSetCpuAffinity(server.server_cpulist);
#错误原因
gcc版本低问题,新版本的。redis6.0以上
#查看gcc版本
gcc -v
1
#解决办法
#升级到 5.3及以上版本
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
#注意:scl命令启用只是临时的,推出xshell或者重启就会恢复到原来的gcc版本。
#如果要长期生效的话,执行如下:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
5、redis的默认安装路径: /usr
6、将redis配置文件
使用此 redis.conf 配置文件进行启动
7、redis默认不是后台启动的,修改配置文件
8、启动redis服务
通过指定的配置文件启动服务
9、使用redis-cli进行连接测试
10、查看redis的进程是否开启
打开node2查看进程
11、如何关闭redis服务呢?
12、再次查询进程,发现客户端和服务端已关闭
13、后面会使用单机多redis启动集群测试
扩展:测试性能
redis-benchmark
是一个压力测试工具,官方的测试性能工具
Redis 性能测试是通过同时执行多个命令实现的
语法
redis 性能测试的基本命令如下:
redis-benchmark [option] [option value]
注意:该命令是在 redis 的目录下执行的,而不是 redis 客户端的内部指令。
redis-benchmark 命令参数:
序号 | 选项 | 描述 | 默认值 |
---|---|---|---|
1 | -h | 指定服务器主机名 | 127.0.0.1 |
2 | -p | 指定服务器端口 | 6379 |
3 | -s | 指定服务器 socket | |
4 | -c | 指定并发连接数 | 50 |
5 | -n | 指定请求数 | 10000 |
6 | -d | 以字节的形式指定 SET/GET 值的数据大小 | 2 |
7 | -k | 1=keep alive 0=reconnect | 1 |
8 | -r | SET/GET/INCR 使用随机 key, SADD 使用随机值 | |
9 | -P | 通过管道传输 请求 | 1 |
10 | -q | 强制退出 redis。仅显示 query/sec 值 | |
11 | –csv | 以 CSV 格式输出 | |
12 | -l | 生成循环,永久执行测试 | |
13 | -t | 仅运行以逗号分隔的测试命令列表。 | |
14 | -I | Idle 模式。仅打开 N 个 idle 连接并等待。 |
测试案例演示:
①启动redis
②检查redis是否开启,查看进程,重新开node2查看
③测试redis-benchmark
#测试: 100个并发连接,100000个请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000