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
原文地址:https://www.cnblogs.com/yunweixiaoxuesheng/p/9101558.html