1.特性

  • 速度快,基于内存,能达到10w QPS(每秒查询速度)
  • 基于键值对,它的value中支持5种数据结构
  • 单线程模式,天生线程安全
  • 支持持久化
  • 主从复制、高可用、分布式、水平扩容

2.应用场景

  • 缓存:提供键值过期时间,提供最大内存控制和内存溢出后的淘汰策略
  • 排行榜:通过列表和有序集合很方便构建各种排行榜系统
  • 计数器:设置超时时间来实现限流?
  • 消息队列:这个还是比不上专业的消息队列的

3.安装配置

  • 单机的安装就是下载安装没有什么好说的,使用Docker安装最为方便

  • 主从配置这里不详细记录,参考:文章

安装

mac

  • 官网下载压缩包
  • 将压缩包解压到/usr/local目录下:/usr/local/redis-5.0.5
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 安装
    cd redis-5.0.5
    make
    sudo make install

    # 启动,启动之前修改一下整个Reddit文件夹的权限,不然用起来不方便
    sudo chmod 777 redis-5.0.5
    redis-server redis.conf
    # 关闭
    redis-cli shutdown

Docker

1
2
3
4
5
6
7
8
9
docker pull redis
# 启动
docker run -itd --name redis -p 7936:6379 redis --requirepass cds-cloud@2022
# 查看容器30分钟内日志
docker logs --since 30m redis
# 进入交互命令行
docker exec -it redis redis-cli
# 注意设置了密码,所以使用的时候需要先进行身份认证
auth cds-cloud@2022

Python调用

安装与测试

  • 安装对应库
    1
    pip3 install redis
  • 调用测试
    1
    2
    3
    4
    5
    6
    7
    import redis 
    # host是redis主机,需要redis服务端和客户端都启动 redis默认端口是6379
    r = redis.Redis(host='localhost', port=6379, decode_responses=True)
    r.set('name', 'luoyang')
    print(r['name'])
    print(r.get('name'))
    print(type(r.get('name')))
  • 开启redis服务,如果有修改配置文件中redis运行的端口就调整成对应的端口即可
  • 运行上面的脚本应该就能输出存储的内容了

基础方法

  • 存储数据
    1
    2
    3
    4
    5
    6
    7
    # 存储数字
    red.set('age',23)
    # 存储字符串
    red.set('name','luoyang')
    # 设置过期时间,单位s
    red.set('temp','test_data',ex=10)

  • 获取数据
    1
    2
    3
    4
    5
    6
    7
    # 获取对应的value
    red.get('age')
    # 模糊匹配所有key
    red.keys('na*')
    # 查看过期时间,返回值有三种,-2已过期,-1没有设置过期时间,正数剩余过期时间
    red.ttl('temp')