NoSQL의 Redis 구성 및 기본 명령

NoSQL의 Redis 구성 및 기본 명령

1. 관계형 데이터베이스와 비관계형 데이터베이스

관계형 데이터베이스

  • 관계형 모델에 구축된 구조화된 데이터베이스

  • 일반적으로 기록 지향적

  • 포함하다

    오라클、MySQL、SQLServer、Microsoft Access、DB2 등

비관계형 데이터베이스

  • 주류 관계형 데이터베이스 이외의 데이터베이스는 비관계형으로 간주됩니다.

  • 포함하다

    Redis, MongBD, Hbase, CouhDB 등

차이점

1. 다른 데이터 저장 방법

관계형 데이터베이스와 비관계형 데이터베이스의 주요 차이점은 데이터가 저장되는 방식입니다. 관계형 데이터는 기본적으로 테이블 형식이므로 데이터 테이블의 행과 열에 저장됩니다. 데이터 테이블은 서로 연관되어 공동으로 저장될 수 있으며 데이터 추출도 쉽습니다.
반대로 비관계형 데이터는 테이블의 행과 열에 맞지 않고 큰 덩어리로 함께 그룹화됩니다. 비관계형 데이터는 일반적으로 문서, 키-값 쌍 또는 그래프 구조와 같은 데이터 세트에 저장됩니다. 데이터와 해당 특성은 데이터를 저장하고 추출하는 방법을 선택하는 데 가장 큰 영향을 미치는 요소입니다.

2. 다른 확장 방법

SQL과 NoSQL 데이터베이스의 가장 큰 차이점은 확장 방식에 있을 수 있으며, 증가하는 수요를 지원하기 위해서는 확장이 필요합니다.
더 많은 동시성을 지원하기 위해 SQL 데이터베이스를 확장합니다. 즉, 처리 능력을 높이고 더 빠른 컴퓨터를 사용하여 동일한 데이터 세트를 더 빠르게 처리할 수 있습니다. 데이터가 관계형 테이블에 저장되기 때문에 많은 테이블이 포함될 수 있는 작업의 성능 병목 현상은 컴퓨터 성능을 향상하여 극복해야 합니다. SQL 데이터베이스는 확장의 여지가 많지만 결국 수직 확장의 상한선에 도달하게 됩니다.
반면에 NoSQL 데이터베이스는 수평적으로 확장됩니다. 비관계형 데이터 스토리지는 본질적으로 분산되어 있기 때문에 NoSQL 데이터베이스의 확장은 더 많은 일반 데이터베이스 서버(노드)를 리소스 풀에 추가하여 로드를 공유함으로써 수행할 수 있습니다.

3. 트랜잭션에 대한 다양한 지원

데이터 작업에 높은 트랜잭션이 필요하거나 복잡한 데이터 쿼리가 실행 계획을 제어해야 하는 경우 성능 및 안정성 측면에서 기존 SQL 데이터베이스가 최선의 선택입니다. SQL 데이터베이스는 트랜잭션 원자성에 대한 세분화된 제어를 지원하며 트랜잭션을 쉽게 롤백할 수 있습니다.
NoSQL 데이터베이스도 트랜잭션 연산을 사용할 수 있지만 안정성 측면에서 관계형 데이터베이스와 비교할 수 없기 때문에 연산의 확장성과 대량의 데이터 처리에 진정한 가치가 있습니다.

요약

  • 비관계형 데이터베이스

    1. 데이터는 캐시에 저장되어 읽기 속도/쿼리 데이터에 도움이 됩니다.

    2. 아키텍처의 유연한 위치

    3. 분산 및 확장성

  • 관계형 데이터베이스

    1. 높은 보안성(지속성)

    2. 강력한 트랜잭션 처리 능력

    3. 강력한 작업 제어 능력

    4. 로그 백업, 복구, 재해복구 능력 강화

2. 레디스 소개

Redis(원격 사전 서버)는 C로 작성된 오픈 소스 NoSQL 데이터베이스입니다.

Redis는 메모리를 기반으로 실행되며 지속성을 지원하며, 현재 분산 아키텍처에서 없어서는 안 될 부분인 키-값(키-값 쌍) 저장 형식을 채택합니다.

Redis 서버 프로그램은 단일 프로세스 모델입니다. 즉, 한 서버에서 여러 Redis 프로세스를 동시에 시작할 수 있으며 Redis의 실제 처리 속도는 전적으로 주 프로세스의 실행 효율성에 달려 있습니다. 서버에서 하나의 Redis 프로세스만 실행 중인 경우 여러 클라이언트가 동시에 액세스하면 서버의 처리 용량이 어느 정도 감소합니다. 동일한 서버에서 여러 Redis 프로세스가 시작되면 Redis는 동시 처리 기능을 향상시키면서 서버의 CPU에 많은 부담을 줍니다. 즉, 실제 프로덕션 환경에서 실제 요구 사항에 따라 몇 개의 Redis 프로세스를 열지 결정해야 합니다. 높은 동시성에 대한 요구 사항이 더 높은 경우 동일한 서버에서 여러 프로세스를 여는 것을 고려할 수 있습니다. CPU 리소스가 상대적으로 부족한 경우 단일 프로세스를 사용할 수 있습니다.

  • Redis의 장점
    1. 데이터 읽기 및 쓰기 속도가 매우 빠릅니다. 데이터 읽기 속도는 최대 110,000회/초에 도달할 수 있고 데이터 쓰기 속도는 최대 81,000회/초에 도달할 수 있습니다.

    2. 풍부한 데이터 유형 지원: 키-값, 문자열, 목록, 해시, 세트 및 정렬된 세트와 같은 데이터 유형 작업을 지원합니다.

    추신:

    문자열 문자열(정수, 부동 소수점 및 문자 유형일 수 있으며 집합적으로 요소라고 함)

    목록 목록(구현 대기열, 요소가 고유하지 않음, 선입선출 원칙)

    해시 해시 세트(해시 키는 고유해야 함)

    컬렉션 집합(고유 요소)

    정렬된 집합 정렬된 컬렉션

    3. 데이터 지속성 지원: 메모리의 데이터를 디스크에 저장하고 다시 시작할 때 다시 로드하여 사용할 수 있습니다.

    4. 원자성: 모든 Redis 작업은 원자성입니다.

    5. 데이터 백업 지원: 즉, master-salve 모드에서 데이터 백업.

Redis는 메모리 기반 데이터베이스이며 캐싱은 가장 일반적으로 사용되는 시나리오 중 하나입니다. 또한 Redis의 일반적인 애플리케이션 시나리오에는 최신 n 데이터, 순위표 애플리케이션, 카운터 애플리케이션, 스토리지 관계, 실시간 분석 시스템 및 로그 기록을 얻기 위한 작업도 포함됩니다.

  • Reids의 빠른 속도의 이유

    1. Redis는 디스크 I/O와 같은 시간 소모적인 작업을 피하는 순수한 메모리 구조입니다.

    2. Redis 명령 처리의 핵심 모듈은 단일 스레드이므로 잠금 경쟁, 빈번한 스레드 생성 및 소멸 비용을 줄이고 스레드 컨텍스트 전환 소비를 줄입니다.

    3. 동시성 효율성을 크게 향상시키는 I/O 다중화 메커니즘이 채택되었습니다.

    추신: Redis 6.0에 새로 추가된 멀티스레딩은 네트워크 요청 처리에 멀티스레딩만 사용하는 반면 데이터 읽기 및 쓰기 명령은 여전히 ​​단일 스레드에서 처리됩니다.

3. Redis 설치 및 배포

[root@lwb ~]# systemctl stop firewalld
[root@lwb ~]# setenforce 0
[root@lwb ~]# yum install -y gcc-c++ make

[root@lwb ~]# cd /opt
[root@lwb opt]# tar xf redis-5.0.7.tar.gz
[root@lwb opt]# cd redis-5.0.7/
[root@lwb redis-5.0.7]# make prefix=/usr/local/redis install

[root@lwb redis-5.0.7]# cd utils
[root@lwb utils]# ./install_server.sh

[root@lwb utils]# ln -s /usr/local/redis/bin/* /usr/local/bin

사진 설명을 추가해주세요

사진 설명을 추가해주세요

[root@lwb utils]# vim /etc/redis/6379.conf

사진 설명을 추가해주세요

[root@lwb utils]# /etc/init.d/redis_6379 restart

#可以在全局使用redis
[root@lwb utils]# ln -s /etc/init.d/redis_6379 /usr/local/bin/redis

#进入redis
[root@lwb utils]# redis-cli -h 192.168.36.40 -p 6379

사진 설명을 추가해주세요

4. Redis 명령 도구

redis-server    :用于启动Redis的工具
redis-benchmark :用于检测Redis在本机的运行效率
redis-check-aof :修复AOF持久化文件
redis-check-rdb :修复RDB持久化文件
redis-cli       :Redis命令行工具
redis-cli -h host -p port -a passwd
-h:指定远程主机
-p:指定Redis服务的端口号
-a:指定密码,未设置数据库密码可以省略-a选项
若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的Redis数据库

redis-cli -h 192.168.36.40 -p 6379

5. Redis-벤치마크 테스트 도구

redis-benchmark는 Redis 서비스의 성능을 효과적으로 테스트할 수 있는 공식 Redis 성능 테스트 도구입니다.

문법 형식:

redis-benchmark [选项] [选项值]

옵션:

-h    :指定服务器主机名
-p    :指定服务器端口
-s    :指定服务器socket
-c    :指定并发连接数
-n    :指定请求数
-d    :以字节的形式指定SET/GET值的数据大小
-k    :l=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.36.40、端口为6379的Redis服务器发送100个并发连接与100000个请求测试性能
redis-benchmark -h 192.168.36.40 -p 6379 -c 100 -n 100000

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

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

6. Redis 데이터베이스 일반 명령

set      :存放数据,命令格式为 set key value
get      :获取数据,命令格式为 get key
keys *   :查看当前数据库中所有键
keys v*  :查看当前数据库中以v开头的数据
keys v?  :查看当前数据库中以v开头后面包含任意一位的数据
keys v?? :查看当前数据库中以v开头后面包含任意两位的数据
exists   :判断key是否存在,命令格式 exists key
del      :删除key,命令格式 del key
type     :查看key的类型,命令格式 type key
rename   :重命名,命令格式 rename key1 key2,若key2已存在则覆盖
renamenx :将key1修改为key2之前判断key2是否存在,不存在则重命名,若存在则无效
dbsize   :查看当前数据库中key的数目

config set requirepass 密码 :设置密码
auth 密码 :使用密码
config get requirepass :查询密码
config set requirepass '' :取消密码

7. Redis 다중 데이터베이스 공통 명령

Redis는 다중 데이터베이스를 지원합니다.Redis는 기본적으로 16개의 데이터베이스를 포함하고 있으며 데이터베이스 이름은 0-15의 숫자로 순차적으로 이름이 지정됩니다. 여러 데이터베이스는 서로 독립적이며 서로 간섭하지 않습니다.

#多数据库间切换
select 序号

#多数据库间移动数据
move key 序号

#清空当前数据库数据
flushdb

#清空所有数据库的数据,慎用!
flushall

추천

출처blog.csdn.net/liwenbin19920922/article/details/126467072