Redis

redis

一、redis特点

​ Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

​ redis VS mysql:

​ redis: 内存数据库(读写快)、非关系型(操作数据方便);

​ mysql: 硬盘数据库(数据持久化)、关系型(操作数据间关系);

​ 大量访问的临时数据,才有redis数据库更优;

​ redis VS memcache:

​ redis: 操作字符串、列表、字典、无序集合、有序集合 | 支持数据持久化(数据丢失可以找回、可以将数据同步给mysql) | 高并发支持;

​ memcache: 操作字符串 | 不支持数据持久化 | 并发量小;

二、Redis操作

2.1 基础操作:

​ 启动服务:redis-server &

​ 连接数据库:redis-cli

​ 连接指定数据库:redis-cli -h 127.0.0.1 -p 6379 -n 1

​ 切换数据库:select 1

2.2 操作字符串

​ 设置指定 key 的值:set key value

​ 获取指定 key 的值:get key

​ 将给定 key 的值设为 value ,并返回 key 的旧值(old value):getset key value

​ 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位):setex key seconds value

​ 只有在 key 不存在时设置 key 的值:setnx key value

​ 将 key 中储存的数字值减一:decr key

​ 将 key 中储存的数字值增一:incr key

​ 将 key 所储存的值加上给定的增量值(increment):incrby key increment

​ key 所储存的值减去给定的减量值(decrement):decrby key decrement

​ 将 key 所储存的值加上给定的浮点增量值(increment):incrbyfloat key increment

​ 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾:append key value

2.3 列表命令

​ 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止:blpop key1[key2] timeout

​ 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止:brpop key1[key2] timeout

​ 通过索引获取列表中的元素:lindex key index

​ 在列表的元素前或者后插入元素:linsert key before|after pivot value

​ 获取列表长度:llen key

​ 移出并获取列表的第一个元素:lpop key

​ 将一个或多个值插入到列表头部:lpush key value1[value2]

​ 移除列表元素:lrem key count value

​ 通过索引设置列表元素的值:lset key index count value

2.4 集合命令

​ 向集合添加一个或多个成员:sadd key member1[member2]

​ 获取集合的成员数:scard key

​ 返回给定所有集合的差集:sdiff key1[key2]

​ 返回给定所有集合的交集:dinter key1[key2]

​ 判断 member 元素是否是集合 key 的成员:sismember key member

​ 返回集合中的所有成员:smebers key

​ 移除并返回集合中的一个随机元素:spop key

​ 返回集合中一个或多个随机数:srandmember key [count]

​ 移除集合中一个或多个成员:srem key member1 [member2]

2.5 有序集合命令

​ 向有序集合添加一个或多个成员,或者更新已存在成员的分数:zadd key score1 member1 [score2 member2]

​ 获取有序集合的成员数:zcard key

​ 计算在有序集合中指定区间分数的成员数:zcount key min max

​ 在有序集合中计算指定字典区间内成员数量:zlexcount key nin max

​ 返回有序集合中指定成员的索引:zrank key member

​ 移除有序集合中的一个或多个成员:zrem key member[member...]

​ 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序:zrevrank key member

​ 返回有序集中,成员的分数值:zscore key member

2.6 字典命令

​ 删除一个或多个字典表字段:hdel key field1 [field2]

​ 查看字典 key 中,指定的字段是否存在:hexists key field

​ 获取存储在字典中指定字段的值:hget key field

​ 获取在字典中指定 key 的所有字段和值:hgetall key

​ 获取所有字典中的字段:hkeys key

​ 获取字典中字段的数量:hlen key

​ 获取所有给定字段的值:hmget key field1 [field2]

​ 同时将多个 field-value (域-值)对设置到字典 key 中:hmset key field1 value1 [field2 value2]

​ 将字典 key 中的字段 field 的值设为 value :hset key field value

​ 只有在字段 field 不存在时,设置字典字段的值:hsetnx key field value

​ 获取字典中所有值:hvals key

三、redis数据库

# 1.安装redis与可视化操作工具

# 2.在服务中管理redis服务器的开启关闭

# 3.命令行简单使用redis:
	-- redis-cli  # 启动客户端
    -- set key value  # 设置值
    -- get key  # 取出值
    
# 4.redis支持:字符串、字典、列表、集合、有序集合
# https://www.runoob.com/redis/redis-tutorial.html

# 5.特点:可持久化、单线程单进程并发

四、python使用redis

4.1 依赖

>: pip3 install redis

4.2 直接使用

import redis
r = redis.Redis(host='127.0.0.1', port=6379, db=1)

4.3 连接池使用

import redis
pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=10, max_connections=100)
r = redis.Redis(connection_pool=pool)

4.4 缓存使用:要额外安装 django-redis

# 1.将缓存存储位置配置到redis中:settings.py
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
        }
    }
}

# 2.操作cache模块直接操作缓存:views.py
from django.core.cache import cache  # 结合配置文件实现插拔式
# 存放token,可以直接设置过期时间
cache.set('token', 'header.payload.signature', 10)
# 取出token
token = cache.get('token')
原文地址:https://www.cnblogs.com/tangceng/p/12002520.html