zoukankan      html  css  js  c++  java
  • 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')
    
  • 相关阅读:
    Quick QEMU
    Linux 常用命令速查
    Linux 安装篇
    Vivaldi解决flash插件问题
    VNC 安装 (适用Redhat 9.0 和 CentOS 7.0+)
    Git使用笔记 (github为例)
    poj3045 Cow Acrobats(二分最大化最小值)
    poj3104 Drying(二分最大化最小值 好题)
    poj3468 A Simple Problem with Integers(线段树区间更新)
    poj1852 Ants(思维)
  • 原文地址:https://www.cnblogs.com/tangceng/p/12002520.html
Copyright © 2011-2022 走看看