沈阳网站建设推广平台,国外域名注册做违法网站,杭州 手机网站建设,网站后期维护包括redis 非关系型数据库
redis 非关系型数据库#xff0c;缓存型数据库 关系型数据库和非关系型数据库的区别#xff1a;
关系型数据库是一个结构化的数据库#xff0c;行和列
列#xff1a;声明对象
行#xff1a;记录对象的属性
表与表之间是有关联的#xff0c;使用…redis 非关系型数据库
redis 非关系型数据库缓存型数据库 关系型数据库和非关系型数据库的区别
关系型数据库是一个结构化的数据库行和列
列声明对象
行记录对象的属性
表与表之间是有关联的使用sql语句来对指定的表库进行增删改查
在创建表时我们是设计好了表的结构。按照表结构来存储数据。数据与表结构不匹配存储数据会失败
非关系型数据库nosqlnot only sql
不需要定义库也不需要定义表结构直接记录即可而且每条记录都可以有不同的数据类型字段字段个数
redis key:value 键值的形式存储。每个键之间没有直接关联库与库之间相互独立 区别
1、数据的存储方式不同
2、扩展方式性能上的提示关系型数据库靠的是提升本机性能。非关系型数据库可以横向扩展加入节点服务器的方式提高性能
3、对事务的支持性mysql支持事务
原子性
隔离性
一致性
执行性
非关系型数据库也支持事务redis也可以支持事务但是其稳定性和处理能力都不如关系型数据库
非关系型数据的主要场景1、操作的扩展
2、海量数据处理
web2.0交互
纯动态网站的三高问题
1、对数据库高并发写的需求
2、对海量数据高效存储与访问的需求
3、对数据库的高可扩展性与高可用性的需求 数据库缓存
web页面缓存
cpu和硬盘之间缓存
常见的缓存需求场景 关系型数据库
库-------表-------行列--------存储数据
非关系型数据库
库-------集合-------键值对
不需要手动的创建库和集合 redis开源的使用c语言编写的一个nql数据库
redis基于内存运行支持持久化数据恢复采用的就是key-value键值对的存储形式目前在分布式架构中是非常重要的一环 redis服务器程序是一个单进程模式即只有一个主进程工作也就是说在一台服务器上可以启动多个redis端口号不能冲突
redis的实际处理速度是完全依靠主进程的执行效率
服务器只部署了一个redis进程多个客户端访问可能会导致redis的处理能力下降
如果部署了多个redis进程虽然能提高redis并发处理能力但是会给服务器的cpu带来很大的压力
一台服务器一般部署三个redis进程根据情况来看高并发要部署多个一般情况下单进程足够 redis的特点
1、具有极高的读写速度数据读取每秒110000次写入数据每秒可以执行81000的写入
2、支持丰富的数据类型
3、支持持久化。平常的数据都是保存在内存中持久化可以写入磁盘中既可以保存到本地也可以实现备份
4、原子性所有的操作都是原子性
5、支持主从模式----master-slave模式 面试题
redis为什么这么快
1、redis是纯内存结构避免磁盘I/O的耗时
2、核心模块是一个单进程减少了线程切换和回收线程的时间
3、I/O的多路复用机制每一个执行线路都可以同时执行读和写高并发的效率大大提高
*特殊说明redis的读写仍然是单进程处理 编译安装redis实验
setenforce 0
systemctl stop firewalld
将安装包redis-5.0.7.tar.gz拖到opt目录下
安装环境yum install -y gcc gcc-c make
解压tar -xf redis-5.0.7.tar.gz
cd redis-5.0.7/
make -j 4
make PREFIX/usr/local/redis install
cd utils/
./install_server.sh
四个回车第五个输入/usr/local/redis/bin/redis-server然后回车,再回车
添加软连接ln -s /usr/local/redis/bin/* /usr/local/bin/
vim /etc/redis/6379.conf
在70行后面加上主机ip地址
重启服务/etc/init.d/redis_6379 restart redis的服务控制命令
/etc/init.d/redis_6379 stop start restart status redis的命令工具
redis-server直接启动redis只能启动
redis-benchmark检测redis在本机的运行效率
redis-cli命令行工具
redis-check-aof检测AOF文件是否正常
redis-check-rdb检测rdb文件是否正常 redis-benchmark
-h 指定服务器的主机名 ip地址
-p 指定服务器的端口号
-c 指定并发连接数
-n 指定请求数 vim /etc/redis/
70行后面添加本机ip地址 如何进入redis
redis-cli -h 192.168.233.30 -p 6379
redis-cli直接使用仅限于本地远程登陆还是需要指定目标服务器的ip地址 redis-cli -h 192.168.233.30 -p 6379
-h 指定ip地址
-p 指定端口号
-a 指定登录密码 redis数据类型五大数据类型
1、string字符串也是redis最近本地类型最大能存储512MB的数据可以存储任何数据数字文字图片等等
2、list数据类型
列表当中的元素还是string类型
3、hash类型
hash类型用于存储对象采用hash格式进行操作。占用的磁盘空间少而且一个hash可以存储4294967295个键值对
4、set数据类型无序集合元素类型也是string元素是唯一的不允许重复多个集合类型可以进行并集交集和差集运算。set当中的元素类型是唯一的可以跟踪一些唯一性的数据访问微博的用户名只要把对应名称redisset集合可以自动保存唯一性方便下一次的访问
5、有序集合 元素类型也是string元素唯一 不能重复。每个元素都会关联一个double小数点的分数score表示权重可以通过权重的大小进行排序元素的权重可以相同
zset
在线积分的排行榜可以实时更新用户的分数。zrange命令回去积分top10的用户zrank命令通过username来获取用户的排行信息 存键set test guoqi
查键get test
在生产中查看键值一般不用keys *一般用keys t*或者keys t APPEND test1 hello键值对不存在会将test1写入到键值对然后报5的长度
APPEND test1 world键值对已存在会将world也一并和前面的字符进行拼接返回当前和之前的长度
STRLEN test1直接返回键的长度
STRLEN test1set可以直接覆盖
INCR test1自增1
decr test1自减1
INCRBY test1 20指定增加数值20 ttl test显示出来的如果是(integer) -2表示已过期
显示出来的如果是(integer) -1表示永不过期 EXPIRE test 30对已有键值对设置生命周期。30是秒数
setex test2 15 lo新建键值的生命周期 MSET key1 hello key2 world同时创建多个键值对key1 key2
mget key1 key2同时打印多个键值对的内容 RPUSH guoqi1 5从右往左插入数据
LPUSH guoqi1 10从左往右插入数据
LRANGE guoqi1 0 -1查询数据
lrange guoqi1 1 2查找数据1和2
LPOP guoqi1从左删除
RPOP guoqi1从右删除 LINSERT guoqi before 3 10指定位置前面进行插入 sadd myset a a c创建aac但是只会有a和cset具有唯一性
SMEMBERS myset查看
srem myset e f c指定移除e f c ZCOUNT myzset 1 3表示权重的范围1scroe3
ZCARD myzset获取成员数量 set和hset创建普通类型和hash类型一般情况下如无特殊需求普通的创建方式即可
对一个键值进行多字段存储节省内存使用hash方式 redis的库 库都是创建好的库16个库
数字排名0-15 每个数据库之间互相独立互不干扰 redis的特点读写速度块 数据类型
1、string
2、list
3、hash对一个键进行多字段操作要使用hash节省内存空间
4、无序集合 set元素不能重复可以用来定义唯一值
5、有序集合 zset元素不能重复但是权重可以相同用来排名 KEYS v* #查看当前数据库中以 v 开头的数据
KEYS v? #查看当前数据库中以 v 开头后面包含任意一位的数据
KEYS v?? #查看当前数据库中以 v 开头 v 开头后面包含任意两位的数据
EXISTS test查看键值test是否存在返回1表示存在返回0表示不存在
del t1表示删除数据库的指定t1
HSET创建单个键值
HMSET连续创建多个键值
select 0切换至目标数据库 0
config set requirepass 123456设置密码
在数据库里面登录密码auth 123456
在数据库外面登录redis-cli -h 192.168.233.11 -p 6379 -a 123456 默写
1、redis的特点
具有极高的读写速度数据读取每秒110000次写入数据每秒可以执行81000的写入
支持丰富的数据类型
支持持久化。平常的数据都是保存在内存中持久化可以写入磁盘中既可以保存到本地也可以实现备份
原子性所有的操作都是原子性
支持主从模式----master-slave模式
2、redis执行速度快的原因
redis是纯内存结构避免磁盘I/O的耗时
核心模块是一个单进程减少了线程切换和回收线程的时间
I/O的多路复用机制每一个执行线路都可以同时执行读和写高并发的效率大大提高
3、redis的数据类型
string类型
list类型
hash类型
set类型
zset类型 面试题
Squid、Varinsh和Nginx有什么区别工作中你怎么选择?
Squid、Varinsh和Nginx都是代理服务器什么是代理服务器: 能当替用户去访问公网并且能把访问到的数据缓存到服务器本地等用户下次再访问相同的资源的时候代理服务器直接从本地回应给用户当本地没有的时候我代替你去访问公网我接收你的请求我先在我自日的本地缓存找如果我本地缓存有我直接从我本地的缓存里回复你如果我在我本地没有找到你要访问的缓存的数据那么代理服务器就会代替你去访问公网。
区别: 1)Nginx本来是反向代理/web服务器用了插件可以做做这个副业但是本身不支持特性挺多只能缓存静态文件:
2)从这些功能上。varnish和squid是专业的cache服务而nginx这些是第三方模块完成
3)varnish本身的技术上优势要高于squid它采用了可视化页面缓存技术在内存的利用上Varnish比Squid具有优势性能要比Squid高。还有强大的通过Varnish管理端口可以使用正则表达式快速、批量地清除部分缓存它是内存缓存速度一流但是内存缓存也限制了其容量缓存页面和图片一般是挺好的;
4)squid的优势在于完整的庞大的cache技术资料和很多的应用生产环境
工作中选择: 要做cache服务的话我们肯定是要选择专业的cache服务优先选择squid或者varnish。