zoukankan      html  css  js  c++  java
  • python redis操作

    一、安装

    pip3 install redis

    二、redis的作用

    一般的程序取数据一般去数据库即可,而当访问量较大,经常访问的数据就可以放在redis里

    redis将数据放在内存中,数据库写在文件中,redis的效率要比数据库高的多。

    redis可以被看做是内存中的大字典,用以保存数据。

    三、redis的5大数据类型

    {
        "k1":"v1",                      # 字符串类型
        "k2":[11,11,33,33,55],          # 列表类型
        "k3":{11,22,33},                # 集合类型
        "k4":{                          # 哈希类型,也就是字典类型,
            "kk1":"vv1",
            "kk2":"{kkk1:vvv1}"       # 再嵌套字典,被识别为字符串
        },
        "k5":{("alex",1),("eric",4)},  # 有序集合,根据分数对集合进行排序
    }

    四、简单操作

    import redis
    
    conn = redis.Redis(host='192.168.1.1',port=6379)
    
    # 对字符串的操作
    conn.set('k1','v1')     # set(self, name, value, ex=None, px=None, nx=False, xx=False):
    # ex 设置数据超时时间,秒
    # px 设置数据超时时间,毫秒
    # nx 如果设置为True,则只有name不存在时,当前set操作才执行,作用为添加
    # xx 如果设置为True,则只有name存在时,岗前set操作才执行,作用为更新
    
    conn.get('k1')
    
    
    # 对列表操作,redis中的列表相当于双向队列,可以做栈,或者消息队列
    conn.lpush('users','alex')  # 将alex添加到users这个列表中去
    conn.rpush('users','eric')
    conn.lpop('users')
    conn.rpop('users')
    conn.blpop('users',timeout=20)          # 如果没有该值,一直阻塞等待,可设超时,超时返回为空,不报错
    conn.brpop('users',timeout=20)          # 如果没有该值,一直阻塞等待
    
    
    conn.expire('users',100)    # 除字符串以外,设置超时时间,可以为time.timedelta自动会变为秒
    
    # 集合
    
    # 哈希
    View Code

    五、迭代器取列表数据

    取假设有100万条数据的列表使用生成器,设定范围,分批次的取到数据

    import redis
    
    conn = redis.Redis(host='192.168.1.1',port=6379)
    
    def get_all_users(name):
        count = conn.llen('users')             # 取得users的长度
        start = 0
        while True:
            vals = conn.lrange('users',start,start+3)       # 取0到10范围的users的数据
            start += 4
            if not vals:
                return
            for val in vals:
                yield val
    
    # vlas = conn.lrange('users',1,start+1)
    
    result = get_all_users('users')
    for item in result:
        print(item)
    View Code
  • 相关阅读:
    SqlServer相关文章
    C#字典(Dictionary)相关文章记录
    Mysql相关文章
    Rabbitmq相关文章
    C#多线程之锁相关文章
    23种设计模式相关文章
    IdentityServer4之Consent与offline_access
    .netCore mvc 在javascript中读取属性中文乱码的问题
    基于 NET5的QQ扫码登录的第三方实现(无需注册开发者)
    Windows 操作系统开启长路径支持
  • 原文地址:https://www.cnblogs.com/yunweixiaoxuesheng/p/9101558.html
Copyright © 2011-2022 走看看