zoukankan      html  css  js  c++  java
  • 内存缓存数据库 nosql之redis

    一、介绍及其安装

    1、介绍
    nosql 非关系数库
    memcache redis 内存缓存数据库
    mongodb 比较接近mysql的一种数据 可以完整的实现大部分业务需求


    Redis是Remote Dictionary Server(远程数据服务)的缩写
    由意大利人 antirez(Salvatore Sanfilippo) 开发的一款 内存高速缓存数据库
    该软件使用C语言编写,它的数据模型为 key-value
    它支持丰富的数据结构,比如 String(字符串) list(双向链表) hash(哈希) set(集合) sorted set(有序集合)。可持久化(数据会定时存储到硬盘),保证了数据安全。

    2、什么场合使用
    ①[Sort Set]排行榜应用,取top n操作,例如sina微博热门话题
    ②[List]获得最新N个数据 或 某个分类的最新数据
    ③计数器应用
    ④[Set]sns(social network site)获得共同好友
    ⑤[Set]防攻击系统(ip判断、黑白名单)等

    3、对比memecache

    ①Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    ②Redis支持master-slave(主—从)模式应用。
    ③Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
    ④Redis单个value的最大限制是1GB, memcached只能保存1MB的数据


    4、redis安装
    官方网址:https://redis.io/
    源码地址:https://github.com/antirez/redis
    linux编译安装redis
    ①上传并查看压缩包文件
    在这里插入图片描述
    ②解压压缩包,安装redis软件

    shell > tar zxvf redis-4.0.1.tar.gz
    shell > cd redis-4.0.1
    

    在这里插入图片描述

    shell > make PREFIX=/usr/local/redis install
    

    ③查看软件的安装目录
    在这里插入图片描述
    ④启动redis服务器
    默认启动redis-server只能前台启动,使用上很不方便
    可以设置配置文件,进行后台启动,启动时指定配置文件地址
    复制配置文件到软件运行目录
    在这里插入图片描述

    修改配置文件

    shell > vim +136 /usr/local/redis/bin/redis.conf
    

    在这里插入图片描述
    指定配置文件地址。重新启动redis
    在这里插入图片描述
    5、命令行客户端使用
    在这里插入图片描述
    redis本身命令行客户端
    在这里插入图片描述
    服务器状态查看
    在这里插入图片描述

    二、操作使用

    1、Key
    key的命名规则不同于一般语言,键盘上除了空格、 换行外其他的大部分字符都可以使用。像“my key”和“mykey ”这样包含空格和换行的key是不允许的。
    我们在使用的时候可以自己定义一个Key的格式。
    例如 object-type?field
    Key不要太长。占内存,查询慢。
    Key不要太短。像u:1000:pwd 就不如 user:1000:password 可读性好
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在redis默认有16库可以使用,不同的业务使用不同的库,或者不同的数据value格式,使用存储到不同库。
    查看配置文件信息
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2、String
    string是redis最基本的类型
    redis的string可以包含任何数据。包括jpg图片或者序列化的对象。
    单个value值最大上限是1G字节。
    如果只用string类型,redis就可以被看作加上持久化特性的memcache
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3、List
    list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。
    这使得list既可以用作栈,也可以用作队列。
    栈 先进后出 一端进 同一端出
    队列 先进先出 一端进 另外一端出

    需求:存储当前比较流行的编程语言
    设计:key LA
    value: c c++ c# java php html css javascript python ruby go nodejs
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4、Set
    redis的set是string类型的无序集合。不允许有重复元素
    set元素最大可以包含(2的32次方-1)个元素。
    关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐功能。
    需求:存储朋友圈信息,并计算出共同好友
    设计:
    xiaomingFR xiaowang xiaoli xiaohei xiaobai xiaolv
    xiaohongFR xiaohei xiaolan xiaohua xiaoben xiaotuzi
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    5、Zset
    和set一样sorted set也是string类型元素的集合,
    不同的是每个元素都会关联一个权(score)。
    通过权值可以有序的获取集合中的元素
    在这里插入图片描述
    score权是数字
    需求:存储一个手机应用排行榜
    设计:
    key AppTop
    value
    score值 1-9

    id score name
    1 6 QQ
    2 8 wechat
    3 4 taobao
    4 2 jd
    5 5 king

    分析:score从大到小排序 第一名 wechat
    score从小到大 jd
    king 想要在score从大到小排名中 排第一 把它score加4
    在这里插入图片描述
    在这里插入图片描述
    6、Hash
    hash数据类型存储的数据与mysql数据库中存储的一条记录极为相似。
    key:value(feild:value)
    需求:存储两个人的信息
    id name age job
    1 tom 4 php
    2 jerry 2 java
    在这里插入图片描述
    在这里插入图片描述

    三、优化操作(了解)

    在这里插入图片描述
    redis提供了两种数据化持久技术:
    ①snappshoting 快照
    ②aof 文件追加写方式
    1、snappshoting
    快照技术会自动进行定时的数据写入到磁盘中
    在这里插入图片描述
    快照技术备份频率,查看配置文件
    在这里插入图片描述
    在这里插入图片描述
    测试备份操作
    ①查看当前备份文件的修改时间
    在这里插入图片描述
    ②添加测试key数据
    在这里插入图片描述
    ③查看备份后的文件
    在这里插入图片描述
    2、append only file
    redis提供了备份频率更快的方式,aof 文件追加写的形式。默认不开启。
    手动开启后,原来的数据就丢失了。
    在这里插入图片描述
    ①开启aof,修改配置文件
    在这里插入图片描述
    在这里插入图片描述
    ②重启redis
    在这里插入图片描述
    ③查看备份效果
    在这里插入图片描述
    四、php操作redis
    1、安装拓展
    安装拓展步骤:1>获取拓展 2>php.ini开启拓展 3>重启服务查看phpinfo
    1)windows下安装
    ①选择对应拓展文件
    php版本号 运行方式(ts nts) 运行平台(vc6,vc9,vc11,vc14,vc15) 软件位数(x86)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ②解压文件放入ext拓展目录
    在这里插入图片描述
    ③在php.ini里开启拓展,并重启服务,查看phpinfo
    在这里插入图片描述
    在这里插入图片描述
    2)linux下安装
    ①编译生成.so拓展文件

    shell > tar zxvf redis-3.1.4RC1.tgz
    shell > cd redis-3.1.4RC1
    

    进入目录之后,没有发现configure,需要使用phpize生成configure

    shell > /usr/local/php/bin/phpize
    

    在这里插入图片描述
    在这里插入图片描述

    shell > ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
    

    在这里插入图片描述
    ②开启php.ini的拓展项,启动服务
    在这里插入图片描述

    shell > /usr/local/http2/bin/apachectl start
    

    在这里插入图片描述
    在这里插入图片描述
    2、代码操作
    默认redis是不允许远程登录的。如果有需求使用远程登录,可以设置一个简单密码。
    ①开启linux防火墙端口
    在这里插入图片描述
    重启防火墙
    在这里插入图片描述
    ②redis配置文件修改远程登录和密码
    注意修改配置之后,重启redis服务
    在这里插入图片描述
    可以设置一个密码提高连接安全性
    在这里插入图片描述
    在这里插入图片描述
    ③在window下写代码连接linux的redis服务器
    https://github.com/phpredis/phpredis
    在这里插入图片描述
    3、消息队列操作
    消息队列(mq) 一些列的操作,把它保存到一个容器中,这个结构的特点,是一个一个进行排队操作。
    ①添加任务消息到队列中
    ②消费(消耗)队列中的消息 (执行任务操作)
    redis实现消息队列的结构:list 一端进,另外一端出 同步阻塞 原子性(一个一个操作)
    需求:实现秒杀抢购
    分析:总共有20件商品,一件一件被抢到,需要进行排队操作。
    ①把商品件数添加到list中
    在这里插入图片描述
    ②消耗队列中的商品
    在这里插入图片描述
    ③限制同一ip只能抢购一次
    先判断用户的ip,如果此时抢购成功,那么不允许再抢购(不允许再出队列操作)
    使用set集合结构,记录已经抢购成功的用户ip
    在这里插入图片描述

    五、redis主从

    主从最起码两台服务器 从服务器同步主服务器数据
    搭建主从,建议使用同配置、同版本的服务器及其软件
    注意点:
    ①主服务器要允许从服务登录使用 bind 0.0.0.0 防火墙的问题
    主服务器 linux
    从服务器 windows
    操作步骤:
    ①安装window下的redis服务器
    使用管理cmd命令行
    在这里插入图片描述
    使用windows服务的方式启动,先安装windows服务
    redis-server --service-install redis.conf //安装
    redis-server --service-uninstall //卸载
    在这里插入图片描述
    查看服务并启动
    在这里插入图片描述
    ②注意修改linux主服务器bind配置
    在这里插入图片描述
    ④使用一台linux的redis从服务器
    修改从服务器的配置文件
    在这里插入图片描述
    启动从服务器的redis
    ⑤操作查看效果
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    LWIP的底层结构(物理层)
    Source insight 支持汇编
    Camera Vision
    i2c-tools的使用方法及举例
    浅析C语言中strtol()函数与strtoul()函数的用法
    CF540C Ice Cave
    CF540B School Marks
    hdu5122 K.Bro Sorting
    hdu1013 Digital Roots
    蓝桥杯 算法提高 递推求值
  • 原文地址:https://www.cnblogs.com/liuqun/p/12655222.html
Copyright © 2011-2022 走看看