Redis(一)

陌路散爱 提交于 2020-02-08 07:59:02

Redis介绍

内存型数据库
在这里插入图片描述

  • 特点

    1. 开源,使用C编写。
    2. 跨平台,支持多种编程语言(C C++ Python Java PHP … )。
    3. 高效性,基于内存,读写速度快,高性能的Key-Value的NoSQL数据库。
    4. 支持多种数据类型,字符串strings,散列hashes,列表lists,集合sets,有序集合sorted sets 等等。
    5. 稳定性,redis支持各种架构,主从复制,哨兵模式,redis集群。
    6. 单进程单线程
  • 附加功能

    1. 支持持久化:将内存中数据保存到磁盘中,保证数据安全,方便进行数据备份和恢复。
    2. 过期键功能:为键设置一个过期时间,让它在指定时间内自动删除。
      <节省内存空间>验证码,音乐播放器,日播放排名,过期自动删除。
    3. 轻事务功能:原子的执行多个操作,对每一条数据操作要么成功,要么失败。
    4. 主从复制
    5. Sentinel哨兵
  • 与其他数据库对比

    1. MySQL : 关系型数据库,存储基于磁盘,慢。
    2. MongoDB:键值对文档型数据库,值为类似JSON文档,数据结构相对单一。 NoSQL数据库,数据主要是存储在内存当中,如果内存不够,数据可以落地到磁盘里面去,而且MongoDB支持sql语句的查询,是最像关系型数据库的非关系型数据库 。
    3. Redis的诞生是为了解决什么问题??
      解决硬盘IO带来的性能瓶颈
  • 应用场景

    1. 缓存:结合关系型数据库使用。使用Redis来缓存一些经常被用到、或者需要耗费大量资源的内容,通过这些内容放到redis里面,程序可以快速读取这些内容。
    2. 一个网站,如果某个页面经常会被访问到,或者创建页面时消耗的资源比较多,比如需要多次访问数据库、生成时间比较长等,我们可以使用redis将这个页面缓存起来,减轻网站负担,降低网站的延迟,比如说网站首页等。
      redis的诞生是为了解决负载问题
    3. 游戏中,电子商务等的排行榜。
    4. 电商秒杀活动,并发计数:点赞,关注等。
  • redis版本

    1. 最新版本:5.0
    2. 常用版本:2.4、2.6、2.8、3.0(里程碑-官方集群解决方案)、3.2、3.4、4.0、5.0

安装

Ubuntu

# 安装
sudo apt-get install redis-server
# 服务端启动
sudo /etc/init.d/redis-server status | start | stop | restart
# 客户端连接
redis-cli -h IP地址 -p 6379 -a 密码

配置文件

  • 配置文件所在路径

    /etc/redis/redis.conf
    mysql的配置文件: /etc/mysql/mysql.conf.d/mysqld.cnf
    
  • 设置连接密码

    1、vim /etc/redis/redis.conf 
       修改500行:requirepass 密码  
    2、重启服务
       sudo /etc/init.d/redis-server restart
    3、客户端连接
       redis-cli -h 127.0.0.1 -p 6379 -a 123456
       127.0.0.1:6379>ping
    
  • 允许远程连接

    1、注释掉本地IP地址绑定
      69行: # bind 127.0.0.1 ::1
    2、关闭保护模式(把yes改为no)
      88行: protected-mode no
    3、重启服务
      sudo /etc/init.d/redis-server restart
    

与python交互

  • 模块(redis)
    Ubuntu

    sudo pip3 install redis
    
  • 使用流程

    import redis
    # 1. 创建数据库连接对象
    r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456')
    
    # 2. 创建连接池并连接到redis
    pool = redis.ConnectionPool(host = '127.0.0.1',db=0,port=6379)
    r = redis.Redis(connection_pool=pool)
    

    池化操作可以避免大量的重复创建操作,造成资源浪费。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!