zoukankan      html  css  js  c++  java
  • 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> 
    
  • 相关阅读:
    前端JS 4
    前端JS 3
    前端JS 2
    前端JS 1
    JS的知识补丁
    去除inline-block元素间的空隙
    js中“||”和“&&”的高级用法
    WebAPP-1
    Node.js_1
    click和onclick的区别
  • 原文地址:https://www.cnblogs.com/wml3030/p/15491544.html
Copyright © 2011-2022 走看看