Redis使用

目录

  • 导入
    • Redis VS MySQL
    • Redis VS Memcache
  • 安装(win64)
  • 基本操作
    • 启动Redis服务
    • 连接Redis服务
    • 切换数据库
    • 关闭Redis服务
    • 密码管理
    • 数据持久化
  • Redis数据类型
  • Python使用Redis

导入

Redis是基于key-value存储, 数据保存在内存中的, 非关系型数据库

Redis VS MySQL

"""
Redis: 
    内存数据库, 读写速度快
    非关系型(k-v), 数据操作方便, 数据固定
MySQL:
    硬盘数据库, 数据永久保存
    关系型, 数据间可以有不同组合
"""

Redis VS Memcache

两者都是非关系型内存数据库, Django默认采用的是Memcache

"""
Redis: 
    数据类型有: 字符串, list列表, hash哈希(字典), set无序集合, zset有序集合
    支持数据持久化到硬盘, 可以将数据同步给MySQL
    高并发支持
    
Memcache:
    数据类型只有字符串
    不支持持久化
    并发量小
"""

安装(win64)

  • 下载地址: https://github.com/MSOpenTech/redis/releases
  • 版本: Redis-x64-3.0.504.zip
  • 解压到D盘的Redis文件下即可
  • 将Redis添加到系统变量
  • 将Redis注册到windows服务中:
    • 切换到Redis安装目录下执行: redis-server.exe --service-install redis.windows.conf --loglevel verbose

基本操作

启动Redis服务

"""
1) 启动Redis服务: 
>: redis-server --service-start

2) 指定配置文件启动Redis服务: 
>: redis-server --service-start D:/Redis/redis.windows.conf
"""

连接Redis服务

"""
1)默认连接:-h默认127.0.0.1,-p默认6379,-n默认0,-a默认无
>: redis-cli

2)完整连接:
>: redis-cli -h ip地址 -p 端口号 -n 数据库编号 -a 密码

3)先连接,后输入密码
>: redis-cli -h ip地址 -p 端口号 -n 数据库编号
>: auth 密码
"""

切换数据库

"""
1)在连入数据库后执行
>: select 数据库编号
"""

关闭Redis服务

"""
1)在没有连接进数据库时执行
>: redis-cli shutdown

2)连接进数据库后执行
>: shutdown
"""

密码管理

"""
1)提倡在配置文件中配置,采用配置文件启动
requirepass 密码

2)当服务启动后,并且连入数据库,可以再改当前服务的密码(服务重启,密码重置)
config set requirepass 新密码

3)连入数据库,查看当前服务密码密码
config get requirepass
"""

数据持久化

"""
1)配置文件默认配置
save 900 1  # 超过900秒有1个键值对操作,会自动调用save完成数据持久化
save 300 10  # 超过300秒有10个键值对操作,会自动调用save完成数据持久化
save 60 10000  # 超过60秒有10000个键值对操作,会自动调用save完成数据持久化

2)安全机制
# 当redis服务不可控宕机,会默认调用一下save完成数据持久化

3)主动持久化
>: save  # 连入数据库时,主动调用save完成数据持久化

注:数据持久化默认保存文件 dump.rdb,保存路径默认为启动redis服务的当前路径
"""

Redis数据类型

"""
数据操作:字符串、列表、哈希(字典)、无序集合、有序(排序)集合
    有序集合:游戏排行榜
    
字符串:
    set key value
    get key
    mset k1 v1 k2 v2 ...
    mget k1 k2 ...
    setex key exp value
    incrby key increment
    
列表:
    rpush key value1 value2 ...
    lpush key value1 value2 ...
    lrange key bindex eindex
    lindex key index
    lpop key | rpop key
    linsert key before|after old_value new_value
    
哈希:
    hset key field value
    hget key field
    hmset key field1 value1 field2 value2 ...
    hmget key field1 field2
    hkeys key
    hvals key
    hdel key field
    
集合:
    sadd key member1 member2 ...
    sdiff key1 key2 ...
    sdiffstore newkey key1 key2 ...
    sinter key1 key2 ...
    sunion key1 key2 ...
    smembers key
    spop key
    
有序集合:
    zadd key grade1 member1 grade2 member2 ...
    zincrby key grade member
    zrange key start end
    zrevrange key start end
"""

Python使用Redis

  1. 安装依赖
>: pip3 install redis
  1. 直接使用
import redis
r = redis.Redis(host='127.0.0.1', port=6379, db=1, password=None, decode_responses=True)
  1. 连接池使用
import redis
pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=1, max_connections=100, password=None, decode_responses=True)
r = redis.Redis(connection_pool=pool)
  1. 缓存使用:要额外安装 django-redis
# 1.将缓存存储位置配置到redis中:settings.py
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100},
            "DECODE_RESPONSES": True,
            "PASSWORD": "",
        }
    }
}

# 2.操作cache模块直接操作缓存:views.py
from django.core.cache import cache  # 结合配置文件实现插拔式
# 存放token,可以直接设置过期时间
cache.set('token', 'header.payload.signature', 300)
# 取出token
token = cache.get('token')

你可能感兴趣的:(Redis使用)