首页 > 数据库 >NoSQL之Redis配置与优化

NoSQL之Redis配置与优化

时间:2023-09-24 20:12:05浏览次数:52  
标签:NoSQL Redis redis local 6379 usr 优化 3.3

目录

NoSQL之Redis配置与优化

本章结构

  • 关系数据库和非关系数据库
  • Redis安装部署
  • Redis数据库常用命令
  • Redis持久化
  • Redis性能管理

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

  • 关系型数据库
    • 一个结构化的数据库,创建在关系模型基础上
    • 一般面向于记录
    • 包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2等
  • 非关系型数据库
    • 除了主流的关系型数据库外的数据库
    • 包括 Redis、MongBD、Hbase、Memcached等

2. SQL 与 NoSQL 的区别

SQL NoSoSQL
存储方式 二维表格结构 不固定的,键值对、文档、索引、图形结构、时间序列等
扩展方式 纵向扩展(提升硬件性能) 横向扩展(增加服务器节点数量)
事务支持 基于ACID原则,事务控制更稳定,细粒度更高 基于BASE原则,稳定性和细粒度控制方面不如SQL
典型代表 MySQL、MariaDB、Oracle、SQL-Server、PostgreSQL Redis、MongBD、Hbase、Memcached、ElasticSearch、Prometheus

3. Redis

3.1 Redis概述

  • C语言开发的 、开源的、基于内存运行的 NoSQL

  • 数据存储结构 键值对(Key = Value K/V)

  • 优点:

    • 具有极高的数据读写速度
    • 支持丰富的数据类型
    • 支持数据的持久化
    • 原子性
    • 支持数据备份
  • 数据类型

    • 五大基础类型

      • String 字符串

      • List 列表

      • Hash 哈希/散列

      • Set 无序集合

      • Sorted Set/Zset 有序集合

    • 三种特殊数据类型

      • HyperLogLogs 基数统计
      • Bitmaps 位图
      • geospatial 地理位置
  • 端口号:6379

问题
Redis支持几种数据类型?
五种
String 字符串
List 列表
Hash 哈希/散列
Set 无序集合
Sorted Set/Zset 有序集合

3.2 Redis 为什么那么快?

1. redis 基于内存运行,数据操作都是内存中完成的
2. 数据读写采用单线程模型,避免了多线程切换的CPU性能消耗,同时也不用考虑各种锁的问题
3. 采用IO多路复用模型,可以使线程处理更多的网络连接请求,提高并发能力

3.3 Redis安装部署

3.3.1 环境准备
systemctl stop firewalld
systemctl disable --now firewalld

setenforce 0
vim /etc/sysconfig/selinux
SELINUX=disabled

yum install -y gcc gcc-c++ make
3.3.2 修改内核参数
vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 2048

sysctl -p
3.3.3 安装redis
yum install -y gcc gcc-c++ make

cd /opt
tar xf redis-7.0.13.tar.gz
cd redis-7.0.13/
ls

make
make PREFIX=/usr/local/redis install
#由于Redis源码包中直接提供了 Makefile 文件,所以在解压完软件包后,不用先执行 ./configure 进行配置,可直接执行 make 与 make install 命令进行安装。

cd /usr/local/
cd redis/
ls bin/
ls

mkdir conf log data
ls
cd /opt/redis-7.0.13/
ls
cp redis.conf /usr/local/redis/conf/
useradd -M -s /sbin/nologin redis
cd /usr/local
ll

chown -R redis:redis redis/
ll redis/
cd redis/bin/
ls
pwd

#环境变量
vim /etc/profile 
PATH=$PATH:/usr/local/redis/bin		#增加一行

source /etc/profile
3.3.4 修改配置文件
vim /usr/local/redis/conf/redis.conf
bind 127.0.0.1 192.168.175.101					#87行,添加 监听的主机地址
protected-mode no					#111行,将本机访问保护模式设置no。如果开启了,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应
port 6379										#138行,Redis默认的监听6379端口
tcp-backlog 511                                 #147 1024/2048
daemonize yes									#309行,设置为守护进程,后台启动
pidfile /usr/local/redis/log/redis_6379.pid		#341行,指定 PID 文件
logfile "/usr/local/redis/log/redis_6379.log"	#354行,指定日志文件
dir /usr/local/redis/data						#504行,指定持久化文件所在目录
requirepass abc123								#1037行,增加一行,设置redis密码
ls
3.3.5 定义systemd服务管理脚本
vim /usr/lib/systemd/system/redis-server.service
[Unit]
Description=Redis Server
After=network.target

[Service]
User=redis
Group=redis
Type=forking
TimeoutSec=0
PIDFile=/usr/local/redis/log/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

#启动服务
systemctl daemon-reload
systemctl start redis-server.service
systemctl enable redis-server.service

netstat -lntp | grep 6379

3.4 Redis 命令工具

redis-server:Redis 服务器启动命令
redis-benchmark:性能测试工具,用于检测 Redis 在本机的运行效率
redis-check-aof:修复有问题的 AOF 持久化文件
redis-check-rdb:修复有问题的 RDB 持久化文件
redis-cli:Redis 客户端命令行工具
redis-sentinel:Redis 哨兵集群使用
cd ..
cd conf/
ls
vim redis.conf
redis-cli
keys *
#登录失败
exit


redis-cli -h 192.168.175.101 -p 6379
         #-h 指定地址         -p 指定端口号
keys *
#登录失败
auth abc123
keys *
#登录成功
exit


redis-cli -h 192.168.175.101 -p 6379 -a abc123
#-a指定密码可以直接登录
keys *
#没有报错

redis-cli
set name 777
get name
type name
lpush mykey a b c d
lrange mykey 0 1
lrange mykey 0 2
lpush mykey e
lrange mykey 0 2
lrange mykey 0 -1

rpush mykey f
#从右往左推
lrange mykey 0 -1


hset car color blue
hset car name bmw
hlen car
hset car price 50
hlen car
hget car name
hget car price
hget car color
sadd myset a b c d
smembers myset
#无序集合
zadd myzset 1 'cyw' 2 'ylc' 3 'fsj'
zrange myzset 0 -1
zrange myzset 0 -1 WITHSCORES

3.4.1 redis-cli 命令行工具
语法:redis-cli -h host -p port [-a password]
-h :指定远程主机
-p :指定 Redis 服务的端口号
-a :指定密码,未设置数据库密码可以省略-a 选项
若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的 Redis 数据库

redis-cli -h 192.168.80.10 -p 6379 -a 'abc123'
3.4.2 redis-benchmark 测试工具
redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。
基本的测试语法:redis-benchmark [选项] [选项值]。
-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 连接并等待。

#向 IP 地址为 192.168.80.10、端口为 6379 的 Redis 服务器发送 100 个并发连接与 100000 个请求测试性能
redis-benchmark -h 192.168.80.10 -p 6379 -c 100 -n 100000

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

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

标签:NoSQL,Redis,redis,local,6379,usr,优化,3.3
From: https://www.cnblogs.com/LJ69/p/17726527.html

相关文章

  • Redis源码分析之启动流程
    源码版本:5.0图形工具:http://www.plantuml.com/plantuml/uml时序图源码:@startumlgroupmainserver.c->setproctitle.c:spt_init():为函数setproctitle调用做初始化工作server.c->server.c:setlocale(LC_COLLATE,"");server.c->server.c:tzset();......
  • golang 使用redis设置分布式锁 demo
    内容来自对chatgpt的咨询分布式锁是在多个节点上运行的应用程序中协调工作的一种常用方法,而Redis是实现分布式锁的流行选择。以下是使用Go语言和github.com/go-redis/redis库来设置Redis分布式锁的一个简单示例:首先,确保你已经安装了该库:goget-ugithub.com/go-redis/redi......
  • Redis搭建集群架构
    使用docker搭建6.x版本以后的镜像docker支持部署集群模式,由于Redis要求集群至少要有三个主节点,因此本次测试搭建了三主三从的Redis集群。不基于Host网络模式配置docker-compose.yml文件version:"3"networks:redis-cluster:driver:bridgeipam:......
  • SpringBoot项目优化和JVM调优
    在开发中项目调优是必须得熟练掌握的事情。在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行。修改配置文件关于修改配置文件application.properties,可参考SpringBoot详细配置文件其中比较重要的有:#Maximumnumberofconnectionsthattheserveraccepts......
  • Redis 命令工具
    ---Redis命令工具---redis-serverRedis服务器启动命令redis-clishutdown停止服务redis-benchmark:性能测试工具,用于检测Redis在本机的运行效率redis-check-aof:修复有问题的AOF持久化文件redis-check-rdb:修复有问题的RDB持久化文件redis-cli:Redis客户端命令行......
  • ClickHouse的数据表设计与性能优化最佳实践探究
    前言ClickHouse是一个高性能的列式数据库,它的设计目标是处理大规模数据集的复杂分析查询。在使用ClickHouse时,数据表的设计和性能优化是非常重要的。本文将深入探讨ClickHouse的数据表设计与性能优化最佳实践。数据表设计列的选择在设计数据表时,需要根据实际情况选择合适的列。......
  • ClickHouse的分布式查询优化
    介绍ClickHouse是一个高性能的列式存储数据库,支持分布式部署。在分布式环境下,如何优化查询性能是一个非常重要的问题。本文将深入探讨ClickHouse的分布式查询优化。分布式查询的挑战在分布式环境下,查询性能的瓶颈通常是网络带宽和节点之间的通信延迟。因此,优化分布式查询的关键......
  • ClickHouse数据表合并与性能优化方法探讨与案例研究分享
    前言ClickHouse是一款高性能的列式数据库,其在海量数据处理方面具有很强的优势。但是,在实际应用中,我们经常需要对多个数据表进行合并,以便更好地进行数据分析和挖掘。本文将探讨ClickHouse的数据表合并与性能优化方法,并结合实际案例进行分享。数据表合并在ClickHouse中,数据表合并......
  • 深入探讨Spring Boot中的Redis缓存
    介绍Redis是一种高性能的内存数据库,常用于缓存和消息队列等场景。在SpringBoot中,我们可以通过集成Redis来实现缓存功能。本文将深入探讨SpringBoot中的Redis缓存。集成Redis在SpringBoot中,我们可以通过添加以下依赖来集成Redis:<dependency><groupId>org.springframewor......
  • Redis搭建哨兵模式架构
    使用Docker安装因为配置太复杂,所以这里我们使用dockercompose来一键部署不使用内部网络搭建编写redis主从docker-compose.ymlversion:'3'services:master:image:rediscontainer_name:redis-masterrestart:alwayscommand:redis-server--requi......