Redis概述及安装、使用和管理 |
您所在的位置:网站首页 › redis最新特性 › Redis概述及安装、使用和管理 |
文章目录
一、NoSQL非关系型数据库1.NoSQL概述2.关系型数据库和非关系型数据库区别(1)数据存储方式不同(2)扩展方式不同(3)对事务性的支持不同
3.非关系型数据库使用场景
二、Redis概述1.简介2.优点3.Redis读写快的原因4.适用场景
三、Redis安装配置四、Redis的使用1.命令行工具redis-cli(登录)2.测试工具redis-benchmark(测试)3.redis命令的使用(1)存入键值对(2)获取键的值(3)判断键的数据类型(redis默认数据类型为string)(4)查看键(5)判断键是否存在(6)删除键(7)修改键名(8)统计键数量(9)设置密码(10)查看当前密码(11)删除密码
4.Redis多库常用命令(1)切换数据库(2) 将数据移动到指定库
五、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
SET 键 值 GET 键 TYPE 键
KEYS * 查看所有键 KEYS 通配符 查看通配符匹配的指定键 EXISTS 键 DEL 键 RENAME 原键名 新键名 若要更改的新键名已存在,则会覆盖此键名的值(建议改名前先exists一下)或使用: RENAMENX 原键名 新键名 //修改前判断新键名是否存在,存在则返回0,不存在则返回1并执行修改
DBSIZE CONFIG SET REQUIREPASS 密码 AUTH 密码 登入后做验证 CONFIG GET REQUIREPASS CONFIG SET REQUIREPASS ‘’ Redis 支持多数据库,Redis默认情况下包含16个数据库,数据库名称是用数字0-15来依次命名的(默认登入是0号数据库)。多数据库相互独立,互不干扰。 (1)切换数据库SELECT 库号 MOVE 键 库号 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属性值 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |