目录
一、数据库类型
1、关系型数据库
2、非关系型数据库
3、关系型非关系型区别
二、Redis数据库
1、什么是Redis
3、Redis特点
4、Redis为什么读写快
5、部署Redis数据库
6、redis管理
7、Redis数据库五大类型
8、Redis数据库基础使用
9、redis五大类型增删查
一、数据库类型
1、关系型数据库
关系型数据库:是一个机构号的数据库,创建在关系模型基础上,是一个二维表,表中字段记录有关联,先建库再建表
2、非关系型数据库
非关系型数据库:NoSQL(NoSQL = Not Only SQL ),意思是“不仅仅是 SQL”,是非关系型数据库的总称。除主流关系型数据库都是非关系型数据库,Redis、Hbase、大部分用在缓存中
3、关系型非关系型区别
非关系数据库:数据保存在缓存中,利于读取速度/查询数据、架构中位置灵活、分布式、扩展性高
关系数据库:安全性高(持久化)、事务处理能力强、任务控制能力强、做日志备份、恢复、容灾的能力更强一点。
二、Redis数据库
1、什么是Redis
Redis(远程字典服务器) 是一个开源的、使用 C 语言编写的 NoSQL 数据库即非关系数据库。
Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。
Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。
2、Redis命中机制和淘汰机制
命中机制:查询数据可以查询到,例如查询100条可以查询到20条即命中20条
淘汰机制:Redis缓存的是高热数据,若负载高于限制则淘汰一些最近没有访问的数据,即删除
3、Redis特点
①读写速度快,读最高可达110000次/s 写最高81000次/s。
②支持丰富的数据类型,key-value 、 strings、 lists等。
③持久化,可以将内存中的数据保存在磁盘中,重启时再次加载进内存进行使用,定期快照,日志记录方式保存(类似增量备份)。
④原子性:redis 所有操作都是原子性的。
⑤支持数据备份:即 master-salve 模式的数据备份。
4、Redis为什么读写快
①、redis是一款纯内存结构工作在内存中,避免了磁盘I/O等操作耗时操作
②、redis命令处理的核心模块是单线程,减少了锁竞争,以及频繁创建线程和销毁线程的代价,减少了线程上下文切换的消耗
③、采用I/O多路复用技术,大大提高并发效率
5、部署Redis数据库
- yum install -y gcc gcc-c++ make
- #安装工具
- cd /opt
- #进入opt目录将软件包上传
- tar zxvf redis-5.0.7.tar
- #解压安装包
- cd /opt/redis-5.0.7
- #进入解压的文件夹中
- make
- #将源代码转换成二进制
- make install prefix=/usr/local/redis
- #安装进硬盘,永久保存在硬盘上 指定安装目录到/usr/local/redis
- cd /opt/redis-5.0.7/utils
- #进入到安装目录执行安装脚步
- ./install_server.sh
- #执行安装脚步
- Please select the redis port for this instance: [6379]
- #第一个是询问设置redis端口不设置直接回车则默认是6379
- Please select the redis config file name [/etc/redis/6379.conf]
- #第二个询问设置redis主配置文件路径,不设置直接回车则是/etc/redis/6379.conf此文件
- Please select the redis log file name [/var/log/redis_6379.log]
- #第三个询问设置redis日志文件位置,不设置直接回车是/var/log/redis_6379.log文件
- Please select the data directory for this instance [/var/lib/redis/6379]
- #第四个询问设置管理redis的RDB文件保存路径不设置直接回车是/var/log/redis_6379.log文件
- Please select the redis executable path [/usr/local/bin/redis-server]
- #第五个设置redis执行文件路径redis-cli等若设置则直接填写,比如设置为/usr/local/redis/bin/redis-server。
- Is this ok? Then press ENTER to go on or Ctrl-C to abort.
- #询问是否配置完成确认安装,回车表示配置完成确认安装,Ctrl-C终止安装
- netstat -antp |grep redis
- #安装完成后redis是自动启动的。查询是否有redis进程有则安装成功
- ln -s /usr/local/redis/bin/* /usr/local/bin/
- #把redis的可执行程序文件放入路径环境变量的目录中便于系统识别即可以在任何位置使用此文件内命令
复制代码
6、redis管理
①redis-server:用于启动redis的工具
②redis-check-rdb:修复rdb持久化文件
③redis-check-aof:修复aof持久化文件
④redis-benchmark:用于检测redis在本机的运行效率
- redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。
- 基本的测试语法:redis-benchmark [选项] [选项值]。
- -h :指定服务器主机名。
- -p :指定服务器端口。
- -s :指定服务器 socket
- -c :指定并发连接数。
- -n :指定请求数。
- -d :以字节的形式指定 SET/GET 值的数据大小。
- -k :1=keep alive 0=reconnect 。
- -r :SET/GET/INCR 使用随机 key, SADD 使用随机值。
- -P :通过管道传输<numreq>请求。
- -q :强制退出 redis。仅显示 query/sec 值。
- --csv :以 CSV 格式输出。
- -l :生成循环,永久执行测试。
- -t :仅运行以逗号分隔的测试命令列表。
- -I :Idle 模式。仅打开 N 个 idle 连接并等待。
- #向 IP 地址为 192.168.10.23、端口为 6379 的 Redis 服务器发送 100 个并发连接与 100000 个请求测试性能
- redis-benchmark -h 192.168.10.23 -p 6379 -c 100 -n 100000
- #测试存取大小为 100 字节的数据包的性能
- redis-benchmark -h 192.168.10.161 -p 6379 -q -d 100
- #测试本机上 Redis 服务在进行 set 与 lpush 操作时的性能
- redis-benchmark -t set,lpush -n 100000 -q
复制代码
7、Redis数据库五大类型
String:String是 redis 最基本的类型,最大能存储 512MB 的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等。默认是此数据类型
List:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素
Hash(散列类型):hash用于存储对象。可以采用这样的命名方式(hash格式):对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。
set:无序集合,元素类型为string类型,元素具有唯一性, 不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算
sorted set:a、有序集合,元素类型为Sting,元素具有唯一性, 不能重复。b、每个元素都会关联–个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同。
8、Redis数据库基础使用
- redis-cli
- #方法1登录redis数据库
- redis-cli -h 主机 -p 6379
- #方法2登录redis数据库
- #进入redis数据库后默认进入的是 0库,默认redis有16个库,序号是0-15。
- select 库序号[0-15]
- #切换redis库范围是0-15
- move 键名 库序号[0-15]
- #将数据迁移到其他库,例如 move ky26 2;将ky26键移动到2库中
- set 键名 键内容
- #设置键内容
- get 键名
- #查看键内容
- keys
- #命令查看库中内容,通常结合*和?等选项使用
- keys *
- #显示本库中所有键
- dbsize
- #统计本库中所有键的和输出
- keys a*
- #显示本库中所有以a开头的键
- keys a?
- #显示本库中以a开头后面只有1个任意字符的键
- exists 键名
- #判断键在本库中是否存在,存在则返回1不存在则返回0
- del 键名
- #删除本库中的此键
- rename 原键名 新键名
- #修改原键名为新间名,若新建名中有内容则直接覆盖不提示
- renamenx 原键名 新键名
- #修改原键名为新键名若新键名存在则此命令执行不成功返回0,不存在更改成功
- type 键名
- #查看此键是什么类型
- flushdb
- #删除此库中的所有内容
- flushall
- #删除redis中所有库的内容
复制代码
9、redis五大类型增删查
reids数据类型 | 增 | 查 | 删除 |
string | set | get | del |
list | lpush | lrange | del |
hash | hset | hget | del |
set | sadd | smembers | del |
sorted set | zadd | zrank | del |
- String:
- set test 123
- #设置string类型的test键值为123
- get test
- #查看string类型的test键的值
- del test
- #删除string类型的test键
- List:
- lpush test 0 1 2 3
- #创建list类型的test键值为0 1 2 3 0为第一个元素 1为第二个元素以此类推
- lrange test 1 1
- #查看test键的第一个元素的值
- lrange test 1 2
- #查看test键的第一个元素到第二个元素的值
- del test
- #删除list类型的test键
- Set:
- 无序集合,元素类型为string类型,元素具有唯一性, 不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算
复制代码