Redis

Redis数据库

关系型数据库
关系型数据库就是一个结构化的表格之间联系组成的数据,一般面向记录。
sql用于执行对关系型数据库中数据的检索和操作。
mysql,Oracle(Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。)sql server,等

非关系型数据库
统称为nosql,就是不仅仅是sql的意思。除了有固定模式的数据库。
redis:是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
mengodb:基于分布式文件存储的数据库,高性能、可扩展、易部署、易使用,存储数据非常方便

非关系型数据库产生背景
随着web2.0(数据海量化,动态网站)的兴起,也就有着很多数据库难以及时存储的问题

  • high performance(对数据库的高并发读写需求)
    因为页面的多元化,导致数据库的并发负载非常高,硬盘i/o无法承受,导致系统瘫痪。此时nosql数据库因然而生,高达十万次上限的读写请求,可以轻松支撑。

  • huge storage(对数据库的高校存储以及访问需求)
    因为网络的普遍大众化,导致会产大量的用户动态信息,此时sql命令查询信息时,效率十分底下,而由于nosql是存储于内存中,查询速度会是它的百倍以上。

  • hig scalability && high availabilit(数据库的高展性和高可用需求)
    由于数据的大量化,导致数据库的扩展需要不断更新,最难的就是横向扩展。

    横向扩展:多增加几台API服务器,一起服务。
    纵向扩展:把API服务器换成性能更好的机器。
    横向扩展 也叫 水平扩展,用更多的节点支撑更大量的请求。 如成千上万的蚂蚁完成一项搬运工作
    纵向扩展 又叫 垂直扩展,扩展一个点的能力支撑更大的请求。如利用1个人的能力,如蜘蛛侠逼停火车

    纵向扩展:在数量不变的前提下提高单硬件的性能
    横向扩展:通过增加数量来提高集群的性能
    在硬件的性能比较低的时候,纵向比横向更便宜 2T<21T
    在硬件的性能比较高的时候,横向比纵向更便宜 16T > 28T

Redis简介
AOF,RDB:可持久化的日志类型。
因为Redis的所有数据都是存储于内存汇总,然后呢不定期/不定量的通过异步保存到磁盘上(RDB半持久化,有时间空隙,安全性低),也可以把每次的数据变化都写到一个AOF里面(全持久化,压力太大,安全)。

Redis的工作原理
一个单进程模型,可以使用多实例(一台多服)
一台一服:速率慢,轻松
一台多服:速率快,cup压力大

Redis的优点

  • 极高的数据读写速度最高可达到十一万次,写入最高可达到八万次
  • 支持吩咐的数据类型,
  • 持久化
  • 原子性:一体性
  • 支持数据备份主从复制
Redis 可以支持多种数据结构的存储 持久化 单线程多实例根据数据顺序提交 键值对限制最长键长521
memcached 只能支持简单的k/v类型数据 没有持久化 多线程且cas保证数据的一致性 键值对限制最长键长250

Redis的安装部署

wget http://download.redis.io/releases/redis-6.0.8.tar.gz
tar xzf redis-6.0.8.tar.gz -C /usr/src
cd /usr/src
make && make PREFIX=/usr/local install  #配置了Makefile文件

#make install 只是生成了二进制文件,没有启动脚本与配置文件,而且里面自带脚本生成
[root@localhost local]# cd /usr/src/redis-4.0.10/
[root@localhost redis-4.0.10]# ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src
[root@localhost redis-4.0.10]# cd utils/
[root@localhost utils]# ls
build-static-symbols.tcl  hashtable          redis_init_script.tpl
cluster_fail_time.tcl     hyperloglog        redis-sha1.rb
corrupt_rdb.c             install_server.sh  releasetools
create-cluster            lru                speed-regression.tcl
generate-command-help.rb  redis-copy.rb      whatisdoing.sh
graphs                    redis_init_script
[root@localhost utils]# ./install_server.sh   #执行安装脚本

Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379]   #端口
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf  #配置文件
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log  #日志文件
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379  #数据目录
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server  #服务端命令
Cli Executable : /usr/local/bin/redis-cli  #客户端命令

[root@localhost utils]# netstat -lnptu | grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      11617/redis-server 

[root@localhost utils]# which redis-server
/usr/local/bin/redis-server

[root@localhost utils]# vim /etc/redis/6379.conf 
70:bind 192.168.200.10 127.0.0.1 #监听地址
93:port 6379  #端口
137,159,167,172
167:日志级别

ALL(关闭) < TRACE(致命) < DEBUG(错误) < INFO(信息) < WARN(警告) < ERROR(调试:事件信息) < FATAL(追踪:程序运行轨迹) < OFF(所有)

187:数据库数量:默认16个,可以使用SELECT <dbid> 命令指定数据库id
219:save 900 1  RDB持久化:900秒进行一次持久化
220 save 300 10  RDB持久化:300秒进行10次持久化
221 save 60 10000  :60秒有一万个数据变化进行一个持久化
242:rdbcompression yes:默认压缩,Redis使用lzf压缩,可以关闭节cpu时间
254:指定本地数据库文件名
264:指定本地数据库存放目录
282:主从复制数据同步

[root@localhost usr]# redis-cli --raw  #启动命令,--raw避免中文乱码

redis-cli -h host -p port -a password  #远程连接命令

[root@localhost ~]# redis-cli -h 192.168.200.10
192.168.200.10:6379> ping  #测试是否启动
PONG  #ok
[root@localhost ~]# redis-cli 
127.0.0.1:6379> ping
PONG

##docker安装Redis
docker pull redis:latest
docker run -itd --name redis-test -p 6379:6379 redis
[root@localhost ~]# docker exec -it redis-test /bin/sh
/data # redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 
posted @ 2021-10-31 22:50  whml  阅读(41)  评论(0编辑  收藏  举报