济源建设网站的公司,旅游网页设计说明200字,北京做校园的网站,meta 手机网站目录 一、NoSQL非关系型数据库
1.NoSQL概述
2.关系型数据库和非关系型数据库区别
#xff08;1#xff09;数据存储方式不同
#xff08;2#xff09;扩展方式不同
#xff08;3#xff09;对事务性的支持不同
3.非关系型数据库使用场景
二、Redis概述
1.简介
2…目录 一、NoSQL非关系型数据库
1.NoSQL概述
2.关系型数据库和非关系型数据库区别
1数据存储方式不同
2扩展方式不同
3对事务性的支持不同
3.非关系型数据库使用场景
二、Redis概述
1.简介
2.优点
3.Redis读写快的原因
4.适用场景
三、Redis安装配置
四、Redis的使用
1.命令行工具redis-cli登录
2.测试工具redis-benchmark测试
3.redis命令的使用
4.Redis多库常用命令
五、Redis性能管理
1.查看内存使用
2.清理内存碎片
1内存碎片如何产生
2内存碎片率
3清理内存碎片
3.内存使用率
4.内回收key 一、NoSQL非关系型数据库
1.NoSQL概述 NoSQL (Not Only SQL)是非关系型数据库的总称。除了主流的关系型数据库外的数据库都认为是非关系型。 不需要预先建库建表定义数据存储表结构每条记录可以有不同的数据类型和字段个数比如微信群聊里的文字、图片、视频、音乐等)。 主流的 NoSQL数据库有 Redis、MongBD、Hbase、Memcached、ElasticSearch、TSD等。
2.关系型数据库和非关系型数据库区别
1数据存储方式不同 关系型和非关系型数据库的主要差异是数据存储的方式。 SQL数据库天然就是表格式的因此存储在数据表的行和列中。数据表可以彼此关联协作存储也很容易提取数据。 NoSQL型数据不适合存储在数据表的行和列中而是大块组合在一起。非关系型数据通常存储在数据集中就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。
2扩展方式不同 关系型和非关系型数据库最大的差别是在扩展方式上要支持日益增长的需求当然要扩展。 SQL数据库是纵向扩展也就是说提高处理能力使用速度更快速的计算机这样处理相同的数据集就更快了。因为数据存储在关系表中操作的性能瓶颈可能涉及很多个表这都需要通过提高计算机性能来克服。虽然sql数据库有很大扩展空间但最终肯定会达到纵向扩展的上限。 NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器:节点)来分担负载。
3对事务性的支持不同 如果数据操作需要高事务性或者复杂数据查询需要控制执行计划那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。 SQL数据库支持对事务原子性细粒度控制并且易于回滚事务。 虽然NoSQL数据库也可以使用事务操作但稳定性方面没法和关系型数据库比较。所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。
3.非关系型数据库使用场景
可用于应对web2.0纯动态网站类型的三高问题高并发、高性能、高可用)。
High performance——对数据库高并发读写需求Huge Storage——对海量数据高效存储与访问需求High Scalability and High Availability——对数据库高可扩展性与高可用性需求。 关系型数据库和非关系型数据库都有各自的特点与应用场景两者的紧密结合将会给web2.0的数据库发展带来新的思路 关系型数据库关注在关系和对数据的一致性保障上 非关系型数据库关注在存储和高效率上。 例如在读写分离的Mysql数据库环境中可以把经常访问的数据存储在非关系型数据库中提升访问速度。 二、Redis概述
1.简介 Redis(远程字典服务器是一个开源的、使用c语言编写的 NoSQL数据库。 Redis基于内存运行并支持持久化采用key-value(键值对的存储形式是目前分布式架构中不可或缺的一环。 Redis服务器程序是单进程模型也就是在一台服务器上可以同时启动多个Redis进程Redis的实际处理速度则是完全依靠主进程的执行效率。
2.优点
具有极高的数据读写速度数据读取的速度最高可达到110000 次/s数据写入速度最高可达到 81000 次/s。
支持丰富的数据类型支持 key-value、Strings、Lists、Hashes、Sets 及 Sorted Sets等数据类型操作。
支持数据的持久化可以将内存中的数据保存在磁盘中重启的时候可以再次加载进行使用。
原子性Redis 所有操作都是原子性的。
支持数据备份即支持 master-salve 模式的数据备份。
3.Redis读写快的原因 Redis基于内存运行避免了磁盘I/O等耗时操作。 Redis命令处理的核心模块为单线程减少了锁竞争以及频繁创建线程和销毁线程的代价减少了线程上下文切换的消耗。 注在Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性而数据的读写命令仍然是单线程处理的。 采用了I/O多路复用机制减少网络I/O消耗大大提升了并发效率。
4.适用场景 Redis作为基于内存运行的数据库是一个高性能的缓存一般应用在session缓存、队列 、排行榜、计数器、最近最热文章、最近最热评论、发布订阅等。 Redis 适用于数据实时性要求高、数据存储有过期和淘汰特征的、不需要持久化或者只需 要保证弱一致性、逻辑简单的场景。
三、Redis安装配置
#将安装包放在/opt下
cd /opt
tar xf redis-5.0.7.tar.gz
cd redis-5.0.7/#编译
make#安装到指定目录
make install PREFIX/usr/local/redis 还需要到安装包中的utils/下执行install_server.sh 再在配置文件/etc/redis/6379.conf中修改监听地址 四、Redis的使用
工具作用redis-server用于启动redis的工具redis-benchmark用于检测redis在本机的运行效率redis-check-aof修复AOF持久化文件redis-check-rdb修复RDB持久化文件redis-cliredis命令行工具
1.命令行工具redis-cli登录 2.测试工具redis-benchmark测试 redis-benchmark [选项] [选项值] -h 指定服务器主机名 -p 指定服务器端口 -s 指定服务器 socket -c 指定并发连接数 -n 指定请求数 -d 以字节的形式指定SET/GET值的数据大小 -k 1代表keep alive保持连接 0代表reconnect重连 -r SET、GET、INCR 使用随机key SADD使用随机值 -P 通过管道传输numreg请求 -q 强制退出redis 仅显示query/sec值 --csv 以CSV格式分割字段的文本输出 -l 生成循环永久执行测试 -t 仅运行以逗号分隔的测试命令列表 -I Idle模式仅打开N个idle连接并等待 #向IP地址为192.168.109.133、端口为6379的Redis服务器发送100个并发连接与100000个请求测试性能
redis-benchmark -h 192.168.116.10 -p 6379 -c 100 -n 100000#测试存取大小为100字节的数据包的性能
redis-benchmark -h 192.168.116.10 -p 6379 -q -d 100#测试本机上Redis服务在进行set与lpush操作时的性能
redis-benchmark -t set,lpush -n 100000 -q 3.redis命令的使用
1存入键值对 SET 键 值 2获取键的值 GET 键 3判断键的数据类型redis默认数据类型为string TYPE 键 Redis中的五大数据类型
名称类型String字符串List列表Hash散列Set无序集合Sorted Set有序集合
4查看键 KEYS * 查看所有键 KEYS 通配符 查看通配符匹配的指定键 5判断键是否存在 EXISTS 键 6删除键 DEL 键 7修改键名 RENAME 原键名 新键名 若要更改的新键名已存在则会覆盖此键名的值建议改名前先exists一下或使用 RENAMENX 原键名 新键名 //修改前判断新键名是否存在存在则返回0不存在则返回1并执行修改 8统计键数量 DBSIZE 9设置密码 CONFIG SET REQUIREPASS 密码 AUTH 密码 登入后做验证 10查看当前密码 CONFIG GET REQUIREPASS 11删除密码 CONFIG SET REQUIREPASS 4.Redis多库常用命令 Redis 支持多数据库Redis默认情况下包含16个数据库数据库名称是用数字0-15来依次命名的默认登入是0号数据库。多数据库相互独立互不干扰。 1切换数据库 SELECT 库号 2 将数据移动到指定库 MOVE 键 库号 五、Redis性能管理
1.查看内存使用 info memory mem fragmentation _ratio #内存碎片率 used memory_rss / used memoryused memory _rss #是Redis向操作系统申请的内存。 used memory #是Redis中的数据占用的内存。 used memory peak # redis内存使用的峰值。 2.清理内存碎片
1内存碎片如何产生 Redis内部有自己的内存管理器为了提高内存使用的效率来对内存的申请和释放进行管理。 Redis中的值删除的时候并没有把内存直接释放交还给操作系统而是交给了Redis内部有内存管理器。 Redis中申请内存的时候也是先看自己的内存管理器中是否有足够的内存可用。 Redis的这种机制提高了内存的使用率但是会使Redis中有部分自己没在用却不释放的内存导致了内存碎片的发生。
2内存碎片率
跟踪内存碎片率对理解Redis实例的资源性能是非常重要的
内存碎片率在1到1.5之间是正常的这个值表示内存碎片率比较低也说明Redis没有发生内存交换。内存碎片率超过1.5说明Redis消耗了实际需要物理内存的150%其中50%是内存碎片率。内存碎片率低于1的说明Redis内存分配超出了物理内存操作系统正在进行内存交换。需要增加可用物理内存或减少Redis内存占用。
3清理内存碎片
Redis版本4.0以下 需要在 redis-cli工具上输入shutdown save 命令让Redis数据库执行保存操作并关闭Redis服务再重启服务器。Redis服务器重启后Redis会将没用的内存归还给操作系统碎片率会降下来。
Redis4.0版本以上 执行 config set activedefrag yes开启自动碎片清理 执行 memory purge手动碎片清理。
3.内存使用率 redis实例的内存使用率超过可用最大内存操作系统将开始进行内存与swap空间交换导致性能大大降低。
避免内存交换发生的方法
针对缓存数据大小选择安装 Redis实例尽可能的使用Hash数据结构存储设置key的TTL生命周期setex 键名 时间(s) 值
4.内回收key 内存清理策略保证合理分配redis有限的内存资源。默认情况下回收策略是禁止删除当达到设置的最大阀值时需选择一种key的回收策略。
配置文件中修改maxmemory-policy属性值 volatile-lru使用LRU算法从已设置过期时间的数据集合中淘汰数据移除最近最少使用的key针对设置了TTL的keyvolatile-ttl从已设置过期时间的数据集合中挑选即将过期的数据淘汰移除最近过期的keyvolatile-random从已设置过期时间的数据集合中随机挑选数据淘汰在设置了TTL的key里随机移除allkeys-lru使用LRU算法从所有数据集合中淘汰数据移除最少使用的key针对所有的keyallkeys-random从数据集合中任意选择数据淘汰随机移除key)noenviction禁止淘汰数据不删除直到写满报错