NoSQL之Redis数据库配置与优化

关系型数据库和非关系型数据库

关系型数据库

  • 一个结构化的数据库,创建在关系模型基础上
  • 一般面向于记录
  • 包括
    • Oracle、MySQL、SQL Server、Microsoft Access、DB2等

非关系型数据库

  • 包括主流的关系型数据库外的数据库,都认为是非关系型
  • 包括
    • Redis、MongoDB、Hbase、CouhDB

非关系型数据库的产生背景

  • High perfoermance——对数据库高并发读写需求
  • High Storage——对海量数据高效存储和访问需求
  • High Scalability && High Availability——对数据库高可扩展性与高可用性需求

Redis简介

  • 基于内存运行并支持持久化
  • 采用key-value(键值对)的存储形式
  • 优点
    • 具有极高的数据读写速度
    • 支持丰富的数据类型
    • 支持数据的持久化
    • 原子性
    • 支持数据备份

Redis数据库

编译安装

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install gcc* zlib-devel
[root@localhost ~]# tar xvzf redis-4.0.9.tar.gz 
[root@localhost ~]# cd redis-4.0.9/ 

[root@localhost redis-4.0.9]# make
[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install 
[root@localhost ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/
[root@localhost redis-4.0.9]# cd /root/redis-4.0.9/utils/
[root@localhost utils]# ./install_server.sh

 查看进程

netstat -anpt | grep redis

 服务控制

./redis_6379 start
./redis_6379 stop
./redis_6379 restart
./redis_6379 status

 配置参数的修改

[root@localhost ~]#vim /etc/redis/6379.conf 
bind 127.0.0.1 192.168.10.101   	//监听的主机地址 
port 6379 		//端口 
daemonize yes 	//启用守护进程 
pidfile /var/run/redis_6379.pid 	//指定 PID 文件 
loglevel notice 	//日志级别 
logfile /var/log/redis_6379.log 	//指定日志文件 

[root@localhost~]#/etc/init.d/redis_6379 restart 
[root@localhost utils]# netstat -anpt | grep redis

Redis命令工具 

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

redis-cli命令行工具 

连接本机redis

redis-cli

连接远程redis

redis-cli -h 192.168.10.101 -p 6379

 redis-benchmark 测试工具

redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。

-h:指定服务器主机名;

-p:指定服务器端口;

-s:指定服务器 socket;

-c:指定并发连接数;

-n:指定请求数;

-d:以字节的形式指定 SET/GET 值的数据大小;

-k:1=keep alive 0=reconnect;

-r:SET/GET/INCR 使用随机 key, SADD 使用随机值;

-P:通过管道传输<numreq>请求;

-q:强制退出 redis。仅显示 query/sec 值;

--csv:以 CSV 格式输出;

-l:生成循环,永久执行测试;

-t:仅运行以逗号分隔的测试命令列表;

-I:Idle 模式。仅打开 N 个 idle 连接并等待。

测试请求性能

redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000

 测试存取性能

redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

 结果参数解析:

(1)PING_INLINE:每秒完成多少次PING操作

(2)GET:每秒完成多少次GET key vlaue

(3)SET:每秒完成多少次SET key vlaue

(4)INCR:每秒完成多少次原子计数

(5)MSET:每秒多个key vlaue请求次数

 set 与 lpush 操作性能

redis-benchmark -t set,lpush -n 100000 -q 

 -n:指定请求数;

-q:强制退出 redis。仅显示 query/sec 值;

-t:仅运行以逗号分隔的测试命令列表;

单数据库常用命令

key 相关命令

添加键值对

set key value

查看当前数据库中所有键

keys *

 查看当前数据库中以 v 开头的数据

keys v*

 查看当前数据库中以 v 开头后面包含任意一位的数据

keys v?

  查看当前数据库中以 v 开头后面包含任意两位的数据

keys v??
判断键值是否存在

exists命令

127.0.0.1:6379>exists teacher 
(integer) 1 结果为1表示存在,为0则是不存在
删除当前数据库的指定key

 del命令

del key
重命名

 rename命令(当新的名称在当前数据库中已存在时会直接覆盖)

rename oldkey newkey

 renamenx (当新的名称在当前数据库中已存在时,停止重命名)

renamenx oldkey newkey
查看当前数据库中 key 的数目
dbsize

 多数据库常用命令

多数据库间切换
select 数据库序号            //Redis默认包含16个数据库,序号为0-15
多数据库间移动数据
set key 数据库序号
 清除数据库内数据

清空当前数据库数据,使用 FLUSHDB

命令实现;清空所有数据库的数据,使用 FLUSHALL 命令实现

Redis持久化

概述

  • Redis是运行在内存中,内存中的数据断电丢失
  • 为了能够重用Redis数据,或者防止系统故障,需要将Redis中的数据写入到磁盘空间,即持久化

持久化分类

  • RDB方式
    • 创建快照的方式获取某一时刻Redis中所有数据的副本
  • AOF方式
    • 将执行的写命令写道文件的末尾,以日志的方式来记录数据的变化

相关推荐

  1. NoSQLRedis数据库配置优化

    2024-07-12 10:36:04       28 阅读
  2. NoSQL Redis配置优化

    2024-07-12 10:36:04       41 阅读
  3. NoSQLRedis配置优化

    2024-07-12 10:36:04       33 阅读
  4. NoSQLREDIS配置优化

    2024-07-12 10:36:04       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 10:36:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 10:36:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 10:36:04       58 阅读
  4. Python语言-面向对象

    2024-07-12 10:36:04       69 阅读

热门阅读

  1. ELK优化

    2024-07-12 10:36:04       29 阅读
  2. AI正在取代程序猿?

    2024-07-12 10:36:04       24 阅读
  3. React@16.x(52)Redux@4.x(1)- 核心概念

    2024-07-12 10:36:04       22 阅读
  4. EtherCAT设备描述中的诊断消息

    2024-07-12 10:36:04       23 阅读
  5. 用虚拟机,可以在x86的电脑上虚拟出arm的电脑吗

    2024-07-12 10:36:04       21 阅读
  6. WSGI 服务器教程:`start_response` 方法解析

    2024-07-12 10:36:04       23 阅读
  7. Python面试题:如何在 Python 中解析 XML 文件?

    2024-07-12 10:36:04       21 阅读
  8. VSCode中多行文本的快速前后缩进

    2024-07-12 10:36:04       19 阅读