服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Redis - Redis概述及安装、使用和管理

Redis概述及安装、使用和管理

2023-10-27 16:52TaciturN' Redis

Redis(远程字典服务器)是一个开源的、使用c语言编写的 NoSQL数据库。Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠主进程的执行效率。

一、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

Redis概述及安装、使用和管理

还需要到安装包中的utils/下,执行install_server.sh

Redis概述及安装、使用和管理

再在配置文件/etc/redis/6379.conf中修改监听地址 

Redis概述及安装、使用和管理

Redis概述及安装、使用和管理

四、Redis的使用

工具 作用
redis-server 用于启动redis的工具
redis-benchmark 用于检测redis在本机的运行效率
redis-check-aof 修复AOF持久化文件
redis-check-rdb 修复RDB持久化文件
redis-cli redis命令行工具

1.命令行工具redis-cli(登录)

Redis概述及安装、使用和管理

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        通过管道传输请求

                                -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

Redis概述及安装、使用和管理

#测试存取大小为100字节的数据包的性能
redis-benchmark -h 192.168.116.10 -p 6379 -q -d 100

Redis概述及安装、使用和管理

#测试本机上Redis服务在进行set与lpush操作时的性能
redis-benchmark -t set,lpush -n 100000 -q

Redis概述及安装、使用和管理

3.redis命令的使用

(1)存入键值对

SET 键 值

Redis概述及安装、使用和管理

(2)获取键的值

GET 键

Redis概述及安装、使用和管理

(3)判断键的数据类型(redis默认数据类型为string)

TYPE 键

Redis概述及安装、使用和管理

Redis中的五大数据类型

名称 类型
String 字符串
List 列表
Hash 散列
Set 无序集合
Sorted Set 有序集合

(4)查看键

KEYS *                  查看所有键

KEYS 通配符        查看通配符匹配的指定键

Redis概述及安装、使用和管理

(5)判断键是否存在

EXISTS 键

Redis概述及安装、使用和管理

(6)删除键

DEL 键

Redis概述及安装、使用和管理

(7)修改键名

RENAME 原键名 新键名     

若要更改的新键名已存在,则会覆盖此键名的值(建议改名前先exists一下)或使用:

RENAMENX 原键名 新键名        //修改前判断新键名是否存在,存在则返回0,不存在则返回1并执行修改

Redis概述及安装、使用和管理

Redis概述及安装、使用和管理

Redis概述及安装、使用和管理

(8)统计键数量

DBSIZE

Redis概述及安装、使用和管理

(9)设置密码

CONFIG SET REQUIREPASS 密码

Redis概述及安装、使用和管理

AUTH 密码        登入后做验证

Redis概述及安装、使用和管理

(10)查看当前密码

 CONFIG GET REQUIREPASS

Redis概述及安装、使用和管理

 (11)删除密码

 CONFIG SET REQUIREPASS ''

Redis概述及安装、使用和管理

4.Redis多库常用命令

        Redis 支持多数据库,Redis默认情况下包含16个数据库,数据库名称是用数字0-15来依次命名的(默认登入是0号数据库)。多数据库相互独立,互不干扰。

(1)切换数据库

 SELECT 库号

Redis概述及安装、使用和管理

(2) 将数据移动到指定库

MOVE 键 库号

Redis概述及安装、使用和管理

五、Redis性能管理

1.查看内存使用

info memory

Redis概述及安装、使用和管理

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属性值

Redis概述及安装、使用和管理

volatile-lru 使用LRU算法从已设置过期时间的数据集合中淘汰数据(移除最近最少使用的key,针对设置了TTL的key)
volatile-ttl 从已设置过期时间的数据集合中挑选即将过期的数据淘汰(移除最近过期的key)
volatile-random 从已设置过期时间的数据集合中随机挑选数据淘汰(在设置了TTL的key里随机移除)
allkeys-lru 使用LRU算法从所有数据集合中淘汰数据(移除最少使用的key,针对所有的key)
allkeys-random 从数据集合中任意选择数据淘汰(随机移除key)
noenviction 禁止淘汰数据(不删除直到写满报错)

到此这篇关于Redis概述及安装、使用和管理的文章就介绍到这了,更多相关内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/weixin_58544496/article/details/127672969

延伸 · 阅读

精彩推荐