NoSQL的四大分类
KV键值对
- 新浪:Redis
- 美团:Redis + Tair
- 阿里、百度:Redis + Memcache
文档型数据库(bson格式 和json类似)
- MongoDB(一般必须掌握)
- 是一种基于分布式文件存储的数据库,由C++编写,主要用来处理大量的文档
- MongoDB是一种介于关系型数据库和关系型数据库的产品,MongoDB是非关系型数据库中功能最丰富最像关系型数据库的
- ConthDB
列存储数据库
- HBase
- 分布式文件系统
图关系数据库
- 不是用来放图片的,而是用来存放关系的:朋友圈社交网络,广告推荐
- Neo4j ,InfoGrid
四者对比
Redis入门
概述
- Redis(Remote Dictionary Server),远程字典服务。是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
- 区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
- “免费” “开源” “当下最热门的NoSQL技术之一,也被人们称为结构化数据库”
- 支持语言
官方介绍:Redis中文文档
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
Redis能干什么
- 内存存储,持久化
- 内存中几乎是断电即失的,所以说持久化很重要
- Redis中持久化的两种机制:RDB、AOF
- 效率高,用于高速缓存
- 发布订阅系统
- 地图信息分析
- 计时器,计数器(统计浏览量等)
特性
- 多样的数据类型
- 持久化
- 集群
- 事务
Redis下载
(Windows环境)下载
Releases · microsoftarchive/redis · GitHub
连接Redis服务器(Windows)
Redis(Linux环境)下载
参考:Linux 环境安装【jdk、Tomcat、Docker、Maven、Kafka、Redis等】_尒轩窗的博客-CSDN博客
重要文件:
文件 | 作用 |
---|---|
redis-benchmark | 测试性能 |
redis-check-aof | 检查AOF持久化 (Redis支持两种持久化方式,RDB / AOF) |
redis-server | 启动服务 |
redis-cli | 客户端 |
查找文件地址命令:
[root@localhost ~]# whereis redis-cli #查找redis-cli
redis-cli: /usr/bin/redis-cli /usr/share/man/man1/redis-cli.1.gz
[root@localhost ~]# whereis redis-server
redis-server: /usr/bin/redis-server /usr/share/man/man1/redis-server.1.gz
[root@localhost ~]# whereis redis.conf
redis: /etc/redis.conf
可通过自定义配置文件启动redis-server
[root@localhost ~]# whereis redis #寻找redis.conf位置
redis: /etc/redis.conf
[root@localhost ~]# whereis redis-server #寻找redis-server位置
redis-server: /usr/bin/redis-server /usr/share/man/man1/redis-server.1.gz
[root@localhost ~]# cd /usr/bin/ #定位到redis-server所在文件
[root@localhost bin]# mkdir lmlRedisConfig #创建文件,以存储自定义配置
[root@localhost bin]# mv /etc/redis.conf lmlRedisConfig/ #将配置文件移到新目录
[root@localhost bin]# cd lmlRedisConfig/
[root@localhost lmlRedisConfig]# vim redis.conf #修改配置
[root@localhost bin]# redis-server lmlRedisConfig/redis.conf #后台启动服务器
[root@localhost bin]# redis-cli -p 6379 #客户端连接
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name lml
OK
127.0.0.1:6379> get name
"lml"
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> shutdown #关闭连接
not connected> exit
可通过命令 ps -ef|grep redis 查询redis是否运行
redis-benchmark性能测试
语法
redis 性能测试的基本命令如下:
redis-benchmark [option] [option value]
序号 | 选项 | 描述 | 默认值 |
---|---|---|---|
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 | 通过管道传输 <numreq> 请求 | 1 |
10 | -q | 强制退出 redis。仅显示 query/sec 值 | |
11 | --csv | 以 CSV 格式输出 | |
12 | -l | 生成循环,永久执行测试 | |
13 | -t | 仅运行以逗号分隔的测试命令列表。 | |
14 | -I | Idle 模式。仅打开 N 个 idle 连接并等待。 |
测试命令
redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q
结果
命令2
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000
结果:
====== PING_INLINE ======
100000 requests completed in 2.32 seconds
100 parallel clients
3 bytes payload
keep alive: 1
10.32% <= 1 milliseconds
83.33% <= 2 milliseconds
94.91% <= 3 milliseconds
98.17% <= 4 milliseconds
98.99% <= 5 milliseconds
99.54% <= 6 milliseconds
99.80% <= 7 milliseconds
99.90% <= 8 milliseconds
99.90% <= 11 milliseconds
99.96% <= 12 milliseconds
100.00% <= 12 milliseconds
43084.88 requests per second
====== PING_BULK ======
100000 requests completed in 2.52 seconds
100 parallel clients
3 bytes payload
keep alive: 1
9.42% <= 1 milliseconds
74.28% <= 2 milliseconds
91.01% <= 3 milliseconds
96.21% <= 4 milliseconds
98.27% <= 5 milliseconds
99.39% <= 6 milliseconds
99.88% <= 7 milliseconds
100.00% <= 7 milliseconds
39714.06 requests per second
====== SET ======
100000 requests completed in 2.38 seconds # 100000个请求在2.38s完成
100 parallel clients # 100个并发客户端
3 bytes payload # 默认每次写入3个字节(可修改)
keep alive: 1 # 只有一台服务器来处理这些请求:测试的是单机性能
8.10% <= 1 milliseconds
80.11% <= 2 milliseconds
93.54% <= 3 milliseconds
97.84% <= 4 milliseconds
99.20% <= 5 milliseconds
99.75% <= 6 milliseconds
99.92% <= 7 milliseconds
100.00% <= 7 milliseconds
41946.31 requests per second # 每秒处理41946.31 个请求
====== GET ======