一、安装
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自动会变为秒 # 集合 # 哈希
五、迭代器取列表数据
取假设有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)