南宁模板建站平台,做网站卖电脑,企业门户首页,wordpress使用七牛#xff08;一#xff09;关系型数据库和非关系型数据库的区别
1、关系型数据库是一个机构化的数据库#xff0c;列和行
#xff08;1#xff09;列#xff1a;声明对象
#xff08;2#xff09;行#xff1a;记录对象的属性
#xff08;3#xff09;表与表之间…一关系型数据库和非关系型数据库的区别
1、关系型数据库是一个机构化的数据库列和行
1列声明对象
2行记录对象的属性
3表与表之间是有关联的使用sql语句来对指定表、库进行增删改查
4在创建表时是设计好了表的结构按照表结构来存储数据数据与表结构不匹配存储数据会失败
5关系型数据库库——表——行、列——存储数据
2、非关系型数据库nosqlnot only sql
1不需要定义库也不需要定义表结构直接记录即可而且每条记录都可以有不同的数据类型字段字段个数
2rediskeyvalue键值对形式存储每个键之间没有直接关联库与库之间相互关联
3非关系型数据库库——集合——键值对不需要手动的创建库和集合
3、区别
1数据的存储方式不同
2扩展方式性能上的提升。关系型数据库靠的是提升本机性能非关系型数据库可以横向扩展加入节点服务器的方式提高性能
3对事务的支持性mysql支持事务原子性、隔离性、一致性、持久性非关系型数据库也支持事务redis也支持事务但是稳定性和处理能力都不如关系型数据库
二redis
1、非关系型数据库的主要场景
1操作的扩展
2海量数据的处理
2、redis的主要目的——解决三高问题
1web2.0交互
2纯动态网站的三高问题
①对数据库高并发读写的需求
②对海量数据高效存储与访问的需求
③对数据库的高扩展性与高可用性的需求
3、数据库缓存常见的缓存需求场景
①数据库缓存
②web页面缓存
③CPU和硬盘之间缓存 4、redis的相关概念
1redis开源的使用c语言编写的NQL数据库
2redis基于内促运行支持持久化数据恢复采用的就是key-value键值对的存储方式目前在分布式架构中是非常重要的一环
5、常见架构 6、redis的工作特点
1redis服务器程序是一个单进程模式即只有一个主进程工作也就是说在一台服务器上可以启动多个redis端口不能冲突
2redis的实际处理速度是完全依靠主进程的执行效率
3问题服务器只部署了一个redis进程多个客户端访问可能会导致redis的处理能力下降如果部署了多个redis进程虽然能提高redis的并发处理能力但是会给服务器的CPU带来很大的压力
4工作中一台服务器一般部署3台redis进程根据情况来看高并发要部署多个一般情况单进程足够
7、redis的特点
1具有极高的读写速度数据读取每秒110000次写入数据每秒可以执行81000次
2支持丰富的数据类型
3支持持久化平常的数据都是保存在内存中持久化可以写入到磁盘中既可以保存到本地磁盘也可以实现备份
4原子性所有的操作都是原子性
5支持主从模式master—slave模式
8、面试题redis为什么这么快
1redis是纯内存结构避免磁盘I/O的耗时
2核心模块是一个单进程减少了线程切换和回收线程的时间
3I/O的多路复用机制每个执行线路都可以同时执行读和写高并发的效率大大提高
*特殊说明redis的读写任然是单进程处理
三部署redis
1、安装依赖环境yum install -y gcc gcc-c make 2、编译 3、安装make PREFIX/usr/local/redis install ln -s /usr/local/redis/bin/* /usr/local/bin/ 4、redis的服务控制命令/etc/init.d/redis_6379 stop 、start、restart、status 5、修改配置文件 四redis的命令工具 redis-server 直接启动redis只能启动 redis-benchmark 检测redis在本机的运行效率 -h 指定服务器的主机名、IP地址 -p 指定服务器的端口号 -c 指定并发连接数 -n 指定请求数 redis-cil 命令行工具 -h 指定ip地址 -p 指定端口号 -a 指定登录密码 redis-check-aof 检测AOF文件是否正常 redis-check-rdb 检测rdb文件是否正常
五redis的数据类型
1、如何进入redisredis-cli -h 20.0.0.41 -p 6379 1直接进入redis-cli仅限于本地登录远程登录还是需要指定目标服务器的ip地址 2、redis的五大数据类型
1string字符串类型—数字、字符串redis最基本的类型最大能存储512MB的数据可以存储任何数据数字、文字、图片等等
2list列表列表中的元素还是string类型
3hash用于存储对象采用hash格式进行操作占用的磁盘空间很少一个hash可以存储42亿个键值对
4set无序集合元素类型也是string元素是唯一的不允许重复多个集合类型之间可以进行并集、交集和差集运算
①应用场景set当中的元素类型是唯一的可以跟踪一些唯一性的数据例如访问微博的用户名只要把对应名称redisset集合可以自动保存
5zset有序集合元素类型string元素不能重复唯一每个元素都会关联一个double类型小数点的分数score表示权重按照通过权重的大小进行排序元素的权重可以相同
①zset应用场景在线积分的排行榜可以实时更新用户的分数
②zrange命令获取积分zrank命令通过username获取用户的排行信息等等按照权重有序排列 redis的五大数据类型 1、string字符串类型redis最基本的类型最大能存储512MB的数据可以存储任何数据数字、文字、图片等等 查看键值对类型 keys * 模糊查询 keys t*查看任意以t开头的键值 keys t??查看任意以开头后面包含任意两个字符的键值 创建键值对 set test 10 set test 10set创建、直接覆盖 设置键值的生命周期新建键值 setex test2 15 yyy setex test2 15 yyy 查看键值对的生命周期ttl test 修改已有键值的生命周期:expire test2 30 查看键值是否存在 exists test exists test 删除键值对 del test del test 查看对应键的类型 type test type test append 返回当前键的总长度 #该键并不存在因此append命令返回当前Value的长度 #该键已经存在因此返回追加后Value的长度 获取指定键的字符长度 strlen test strlen test 增减incr、decr、incrby、decrbykey值必须为整数 incr、decr 自增和自减1 incr test / decr test incrby和decrby 指定整数增减 incrby test 5 decrby test 5 批量创建多个键值对 mset mset test2 10 test3 10 同时打印多个键的值 mget mget test2 test3 2、list数据类型列表列表中的元素还是string类型 创建列表 lpush test1 a b 创建列表lpush test1 a b c d 根据索引下标查看列表中的元素 lindex test1 2 lindex test1 2指定某一个索引下标位置 lrange info 1 2指定范围查看 正序创建列表 rpush info 1 2 3 4 rpush info 1 2 3 4 往列表中添加元素 删除列表中第一个元素 移除并返回mykey键的第一个元素,即从右往左第一个 lpop info1 获取列表的长度 llen info 修改列表中元素 lset info 3 5 在指定位置前进行插入元素 linsert info before 2 1 linsert info after 2 1 3、hash数据类型用于存储对象采用hash格式进行操作占用的磁盘空间很少一个hash可以存储42亿个键值对 创建hash键值 键名字段名 hset hafo name aa 获取键值对的元素hget hafo name 查看多个键值 hmget hafo name sex 删除键值 hdel hafo name sex 一次性设置多个字段 hmset info2 name 1 sex male tall 188 hgetall info2查看所有 hkeys info2查看所有键、字段 hvals info2查看所有键对应的值 删除键值 del info 4、set数据类型无序集合元素类型也是string元素是唯一的不允许重复多个集合类型之间可以进行并集、交集和差集运算 1应用场景set当中的元素类型是唯一的可以跟踪一些唯一性的数据例如访问微博的用户名只要把对应名称redisset集合可以自动保存 创建 sadd myset a b 查看元素 smembers myset 查看合集中的元素是否存在 sismember myset a 随机返回一个元素 srandmember myset 删除 随机删除一个元素spop myset 指定名称删除srem myset a d 5、zset有序集合元素类型string元素不能重复唯一每个元素都会关联一个double类型小数点的分数score表示权重按照通过权重的大小进行排序元素的权重可以相同 1zset应用场景在线积分的排行榜可以实时更新用户的分数 2zrange命令获取积分zrank命令通过username获取用户的排行信息等等按照权重有序排列 创建 zadd myzset 1 one 2 two 3 three 查看元素 查看元素zrange myzset 0 -1 查看元素权重zrange myzset 0 -1 withscores 获取位置索引 zrank myzset one元素 查看成员数量 zcard myzset 查看权重范围 zcount myzset 1 21《元素》2 删除元素 zrem myzset three元素 查看元素的权重 zscore myzset two 对已有键重命名 rename hafo haa值不变 补充set和hset创建普通类型和hash类型的选择一般情况下如无特殊需求普通创建即可若对一个键进行多字段存储节省内存使用hash方式 查看当前库中键的数量 dbsize 切换库 select 0 redis的库都是创建好的默认16个数字排名0-15美格库之间互相独立互不干扰默认是0 移动库的内容 move yyy 10 设置密码 config set requirepass 123456 在外声明密码redis-cli -h 20.0.0.41 -p 6379 -a 123456 在内声明密码auth 123456 清空当前数据库的数据 flushdb 清空所有库 不能用 flushall