• Redis


      Redis是一个使用 ANSI C 编写的开源、支持网络、基于内存、可选持久性键值对存储数据库。其数据是保存在内存中,同时可定时把内存数据同步到磁盘,将数据持久化,比memcached支持更多的数据结构:string,list,set,sorted set,hash。

    redis的应用:

    • 登录会话存储:存储在redis中,数据不会丢失。
    • 排行版/计数器:文章的阅读量,网站人气的排行榜等
    • 作为消息队列:如celery使用redis作为中间人。
    • 当前在线人数:网站显示当前系统有多少在线人数。
    • 常用的数据缓存:网站打开时默认加载出来的模块信息,可先缓存,避免每次访问都需请求数据库。
    • 把前200篇文章缓存或者评论缓存:浏览网站把前面200篇文章和对应的评论缓存起来。访问超过的再访问数据库,单文章超过200篇,则把之前的文章删除。
    • 好友关系:如微博好友关系。
    • 发布和订阅功能:可用来做聊天软件。

    Redis的持久化:

    两种数据备份方式:

    • RDB
    • AOF

    RDB

    1. 默认开启,在 /etc/redis 目录下打开配置文件 vim redis.conf ,将其中的 save 选项都注释掉即关闭。
    2. 同步机制: save 900 1  表示900s内发生一次数据更新操作,就会进行一次同步;
    3. 存储路径: /var/lib/redis/dump.rdb ,存储为压缩后的具体的数据;
    4. 优点:
      1. 存储数据会进行压缩,文件体积比AOF小;
      2. 存储的为经过压缩的具体的值,恢复速度比AOF快;
      3. 适用于备份;
    5. 缺点:
      1. 因采用了压缩的机制,至少设置5分钟保存一次数据,同步时需重新保存整个Redis中的数据,所以故障时会有5分钟数据丢失;
      2. 数据保存进RDB时,Redis会fork出一个子进程用来同步,数据量大时会耗时。

    AOF

    1. 默认关闭,修改配置文件 redis.conf 中 appendonly no 改为 appendonly yes ;
    2. 同步机制:
      1. appendfsync always :每次有数据更新,都进行同步;
      2. appendfsync everysec :每秒进行一次更新;
      3. appendfsync no :使用操作系统方式进行更新,普遍30s更新一次
    3. 存储路径: /var/lib/redis/appendonly.aof ,存储为具体命令,不进行压缩;
    4. 优点:
      1. 实时同步数据,服务器故障时仅丢失1秒数据;
      2. 存储的命令是直接追加到AOF文件后面,备份时只需添加新的数据进去即可;
      3. AOF文件较大时,Redis会进行重写,只保留最小的命令集合;
    5. 缺点:
      1. 文件不经过压缩,体积较大;
      2. 实时在进行备份,并发量较大时,效率会被慢;
      3. 因存储的是命令,在恢复数据时Redis需重新运行AOF的命令,速度比RDB慢。

    Redis密码:

    1. 设置密码:在redis.conf 配置文件中,将requirepass password 取消注释并指定密码;
    2. 使用密码登录:
      • 进入Redis后,使用 auth password 进行授权;
      • 连接时通过 -a 参数指定密码进行连接  root@li:/etc/redis# redis-cli -p 6379 -h 127.0.0.1 -a 111111  

    其它机器连接Redis:连接本机Redis服务器时,在 redis.conf 文件中的 bind 后添加本机的IP: bing 127.0.0.1 192.168.1.55(Redis本机IP) 

    python中Redis的订阅与发布:

    1 from redis import Redis
    2 
    3 cache = Redis(host='192.168.1.83',port=6379,password=111111)
    4 # 邮件的发布
    5 for x in range(3):
    6     cache.publish('email','jack@qq.com')
    1 # 邮件的订阅功能,先获取对象再订阅
    2 ps = cache.pubsub()
    3 ps.subscribe('email')
    4 while True:
    5     for item in ps.listen():
    6         if item['type'] == 'message':
    7             data = item['data']
    8             print(data)
  • 相关阅读:
    CF Hello 2020 E.New Year and Castle Construction
    HTML 简介
    グランドエスケープ
    CF 1244 C
    N皇后解法以及位运算优化
    CF
    动态规划TG.lv(1) (洛谷提高历练地)
    搜索Ex (洛谷提高历练地)
    数字图像处理——图像增强
    数字图像处理——图像的几何变换
  • 原文地址:https://www.cnblogs.com/liqiongming/p/10771626.html
Copyright © 2020-2023  润新知