python redis模块详解
这篇文章主要介绍redis的使用。 简单介绍下redis,一个高性能key-value的存储系统,支持存储的类型有string、list、set、zset和hash。在处理大规模数据读写的场景下运用比较多。 ? 1.连接Redis数据库: 1)直接连接 import redis red = redis.Redis(host='localhost',port=6379,db=1) ? 2)连接池连接 连接池的原理是,通过预先创建多个连接,当进行redis操作时,直接获取已经创建的连接进行操作,而且操作完成后,不会释放,用于后续的其他redis操作,这样就达到了避免频繁的redis连接创建和释放的目的,从而提高性能。redis模块采用ConnectionPool来管理对redis server的所有连接。 import redis pool = redis.ConnectionPool(host='localhost',db=1) red = redis.Redis(connection_pool=pool) red.set('key1','value1') red.set('key2','value2') ? 2.String类型存取: set(self,name,value,ex=None,px=None,nx=False,xx=False) #在Redis中设置值,默认不存在则创建,存在则修改 red.set('key','value') #参数: # set(name,xx=False) # ex,过期时间(秒) # px,过期时间(毫秒) # nx,如果设置为True,则只有key不存在时,当前set操作才执行,同#setnx(key,value) # xx,如果设置为True,则只有key存在时,当前set操作才执行 mset(self,*args,**kwargs) #批量设置值 red.mget({"key1":'value1',"key2":'value2'}) get(self,name) #获取某个key的值 red.get('key1') mget(self,keys,*args) #批量获取 red.mget("key1","key1") strlen(self,name) #返回key对应值的字节长度(一个汉字3个字节) red.strlen("key") append(name,value) #在name对应的值后面追加内容 red.set("key","value") print(r.get("key")) #输出:'value' r.append("key","one") print(r.get("key")) #输出:'valueone' ? 3.Hash类型:一个name对应一个dic字典来存储。 hset(self,key,value) #name对应的hash中设置一个键值对(不存在,则创建,否则,修改) red.hset("name","key","value") hget(self,key) red.hset("name","value") #在name对应的hash中根据key获取value print(red.hget("name","key"))#输出:'value' hgetall(self,name) #获取name所有键值对 red.hgetall("name") hmset(self,mapping) #在name对应的hash中批量设置键值对,mapping:字典 dic={"key1":"aa","key2":"bb"} red.hmset("name",dic) print(red.hget("name","key2"))#输出:bb hmget(self,*args) #在name对应的hash中批量获取键所对应的值 dic={"key1":"aa",dic) print(red.hmget("name","key1","key2"))#输出:['aa','bb'] hlen(self,name) #获取hash键值对的个数 print(red.hlen("name"))#输出:2 hkeys(self,name) #获取hash中所有key red.hkeys("name") hvals(self,name) #获取hash中所有value red.hvals("name") hexists(self,key) #检查name对应的hash是否存在当前传入的key print(red.hexists("name","key1"))#输出:Ture hdel(self,*keys) #删除指定name对应的key所在的键值对,删除成功返回1,失败返回0 print(red.hdel("name","key1"))#输出:1 hincrby(self,amount=1) #与hash中key对应的值相加,不存在则创建key=amount(amount为整数) print(red.hincrby("name",amount=10))#返回:10 ? 4.list类型:一个name对应一个列表存储。 lpush(self,*values) #元素从list的左边添加,可以添加多个 red.lpush('name','元素1','元素2') rpush(self,*values) #元素从list右边添加,可以添加多个 red.rpush('name','元素2') lpushx(self,*values) #当name存在时,元素才能从list的左边加入 red.lpushx('name','元素1') rpushx(self,*values) #当name存在时,元素才能从list的右边加入 red.rpushx('name','元素1') ?llen(self,name) #name列表长度 red.llen('name') linsert(self,where,refvalue,value) # 在name对应的列表的某一个值前或后插入一个新值 red.linsert("name","BEFORE","元素2","元素1.5")#在列表内找到第一个"元素2",在它前面插入"元素1.5" #参数: # name: redis的name # where: BEFORE(前)或AFTER(后) # refvalue: 列表内的值 # value: 要插入的数据 lset(self,index,value) #对list中的某一个索引位置重新赋值 red.lset("name","abc") lrem(self,num=0) #删除name对应的list中的指定值 red.lrem("name","元素1",num=0) # 参数: # name: redis的name # value: 要删除的值 # num: num=0 删除列表中所有的指定值; # num=2 从前到后,删除2个; # num=-2 从后向前,删除2个''' lpop(self,name) #移除列表的左侧第一个元素,返回值则是第一个元素 print(red.lpop("name")) lindex(self,index) #根据索引获取列表内元素 print(red.lindex("name",1)) lrange(self,start,end) #分片获取元素 print(red.lrange("name",-1)) ltrim(self,end) #移除列表内没有在该索引之内的值 red.ltrim("name",2) ? 5.set类型:集合是不允许重复的列表 sadd(self,*values) #给name对应的集合中添加元素 red.sadd("name","aa") red.sadd("name","aa","bb") scard(self,name) #获取name对应的集合中的元素个数 red.scard("name") smembers(self,name) #获取name对应的集合的所有成员 red.smembers('name') sdiff(self,*args) #在第一个name对应的集合中且不在其他name对应的集合的元素集合 red.sadd("name","bb") red.sadd("name1","bb","cc") red.sadd("name2","cc","dd") print(red.sdiff("name","name1","name2"))#输出:{aa} sismember(self,value) #检查value是否是name对应的集合内的元素 smove(self,src,dst,value) #将某个元素从一个集合中移动到另外一个集合 spop(self,name) #从集合的右侧移除一个元素,并将其返回 ? 6.其他常用操作 flushdb(self,asynchronous=False) #清空当前db中的数据,默认是同步。若开启异步asynchronous=True,会新起一个线程进行清空操作,不阻塞主线程 flushall(self,asynchronous=False) #清空所有db中的数据,默认是同步。异步同flushdb delete(self,*names) #根据name删除redis中的任意数据类型 exists(self,name) #检查redis的name是否存在 keys(self,pattern='*') #根据* ?等通配符匹配获取redis的name expire(self,time) #为某个name的设置过期时间 rename(self,dst) #重命名 move(self,db)) # 将redis的某个name移动到指定的db下 randomkey(self) #随机获取一个redis的name(不删除) type(self,name) # 获取name对应值的类 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python中查找excel某一列的重复数据 剔除之后打印
- Python【Network/XHR/json】
- Python DataFrame – 删除具有属于值列表的列值的行
- Python Ethical Hacking - Malware Analysis(4)
- python实现保存网页到本地示例
- python – 从scipy.stats … rvs和numpy.random的随机抽取之
- python – 无法使用sort_contors构建七段OCR
- 使用Python的turtle模块画图的方法
- 室友每到晚上就哭着要我给他开wifi看小说!我爬了他五年的小
- python – PyQt4库和Mac OS上的安装