Python下redis的使用(整理)

redis是一种数据结构服务器

Python安装redistribute驱动程序:pip install redis

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

位图bit是一种非常省空间且快速的处理超大集合数字的方式。

conn.bitop(operation, dest, *key) 

说明: operation可以为and/or/xor/not,除了not外都可以对一个或是多个保存二进制的字符串key进行元操作,将结果保存到dest中

conn.getbit(name, offset) 

说明: 对key所存储的字符串值,获取指定偏移上的位,当offset比字符串的长度大,或者key不存在时,返回0

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

下面介绍redis的一些使用:

1、数据存储:

C编写,支持网络,基于内存亦可持久化,

KEY-VALUE数据库,支持多种存储类型(string, list, set, zset, hash),

默认数据缓存内存中,但是会周期性的把更新的数据写入磁盘或把修改操作写入追加的记录文件,并在此基础上实现主从同步,完全实现发布/订阅机制,完美解耦消息发布者和消息订阅者之间的耦合

2、连接对象:

cp = connection_pool = redis.ConnectionPool(max_connections=None,**connection_kwargs) -> connection pool

conn = redis.StrictRedis(connection_pool=connection_pool)

3、键操作法:

conn.delete(*names) 

说明: 删除给定的一个或是多个key

conn.dump(name) 

说明: 序列化name对应的value

conn.exists(name) 

说明: 检查给定的key是否存在

conn.expire(name, time) 

说明: 为给定name设置生存时间,让name过期时,它会被自动删除,可以重复设置重新设置过期时间

conn.pexpire(name, time) 

说明: 同上,但是它以毫秒为单位设置key的生存时间

conn.expireat(name, when) 

说明: 同上,但是不同在于它接受的时间参数为unix时间戳

conn.keys(pattern='*') 

说明: 查找所有符合模式的pattern的key

conn.move(name, db) 

说明: 将当前的name移动到其它db,redis默认的db为0

conn.persist(name) 

说明: 移除name的生存时间,将这个name从易失的转换为持久的

conn.ttl(name) 

说明: 以秒为单位,返回给定key的剩余生存时间

conn.pttl(name) 

说明: 同上,但是以毫秒为单位返回name的剩余生存时间

conn.randomkey() 

说明: 从当前数据库中随机返回一个key

conn.rename(src, dst) 

说明: 将src改名为dst,如果dst默认已经存在则覆盖

conn.renamenx(src, dst) 

说明: 同上,但是如果dst已经存在则不会覆盖

conn.sort(name, start=None, num=None, by=None, get=None, desc=False, alpha=False, store=None, groups=False)

说明:返回或是保存给定列表,集合,有序集合name中经过排序的元素,默认以数字作为对象比较,start/num分别为开始和返回个数,desc是否逆向排序,alpha是否按字母排序,by排序依据,get取出键对应值,store排序后保存

conn.type(name) 

说明: 返回name的类型,可以为none/string/list/set/zset/hash

scan/sscan/hscan/zscan(self, cursor=0, match=None, count=None) 

说明: scan迭代当前数据库的数据库键,sscan迭代集合键中元素,hscan迭代哈希键值对,zscan迭代有序集合中元素


4、字符串方法:

conn.append(key, value) 

说明: 如果key不存在则将value赋值给key,如果key已经存在,则将value追加到之前key原来值的末尾

conn.setbit(name, offset, value) 

说明: 对name所存储的字符串值设置或是请求指定偏移量上的bit,value只可以为0/1,当key不存在时,自动生成一个新的字符串值 

conn.bitcount(self, key, start=None, end=None) 

说明: 计算给定字符串中被设置为1的比特位的数量,默认给定的整个字符串会被进行计数,通过额外的start/end参数可以让计数只在特定的位上进行,start/end可以使用负值,0表示第一位,-1表示最后一位,

此特性常用来统计用户的上线频率,例如今天是第100天,而用户limanman浏览过网站,那么执行命令setbit limanman 100 1以此类推,然后通过bitcount limanman获取指定时期的上线次数,来计算出上线率

conn.bitop(operation, dest, *key) 

说明: operation可以为and/or/xor/not,除了not外都可以对一个或是多个保存二进制的字符串key进行元操作,将结果保存到dest中

conn.getbit(name, offset) 

说明: 对key所存储的字符串值,获取指定偏移上的位,当offset比字符串的长度大,或者key不存在时,返回0

conn.decr(name, amount=1) 

说明: 如果name不存在,那么name的值会先被初始化为0然后再执行DECR操作,否则递减amount

conn.get(name) 

说明: 获取name所关联的字符串值,如果不存在则返回特殊值nil

conn.getrange(key, start, end) 

说明:获取key中字符串的子字符串,字符串的截取范围由start/end两个偏移量,可以为负数(包括start/end在内)

conn.getset(name, value) 

说明: 将给定的name的值设置为value,并返回name原来对应的值

conn.incr(name, amount=1) 

说明: 如果name不存在,那么name的值会先被初始化为amount然后执行incr操作,否则递增amount

conn.incrbyfloat(name, amount=1.0) 

说明: 如果name不存在,那么name的值会先被初始化为0然后执行incr操作,否则递增amount

conn.mget(keys, *args) -> list

说明: 返回所有给定key的值,如果有key不存在则返回特殊值nil

conn.mset(*args, **kwargs) 

说明: 同时设置一个或是多个key-value对,如果key已经存在则mset会用新值覆盖原来的旧值

conn.msetnx(*args, **kwargs) 

说明: 同上但是已经存在的key不会去覆盖key对应的value值

conn.set(name, value, ex=None, px=None, nx=False, xx=False) 

说明: 将字符串值value关联到name,如果name已经存在则覆盖

conn.setnx(self, name, value) 

说明: 同上,如果name存在则不覆盖

conn.setex(name, time, value) 

说明: 将value关联到key,并将key的生存时间设置为time秒

conn.psetex(name, time_ms, value) 

说明: 同上,但是将生存时间设置为time_ms微妙

conn.setrange(name, offset, value) 

说明: 用value覆盖name对应的从offset算起的值

conn.strlen(name) 

说明: 返回key所存储的字符串的长度

5、哈希方法:

conn.hdel(name, *keys) 

说明: 删除哈希表name中的一个或是多个指定域,不存在的域将被忽略

conn.hexists(name, key) 

说明: 查看hash表key中给定域key是否存在

conn.hget(name, key)

说明: 返回哈希name中给定key的值,当key不存在时返回nil

conn.hgetall(name)

说明: 返回哈希表name中,所有的域和值

conn.hincrby(name, key, amount=1)

说明: 为哈希表name的域key的值递增amount,如果不存在初始化为0然后加amount

conn.hincrbyfloat(name, key, amount=1.0)

说明: 为哈希表name的域key的值递增amount,如果不存在初始化为0然后加amount

conn.hkeys(name)

说明: 返回哈希表name中的所有域

conn.hlen(name)

说明: 返回哈希表name中域的数量

conn.hmget(name, keys, *args)

说明: 返回哈希表name中一个或是多个给定域的值

conn.hmset(name, mapping)

说明: 将mapping字典表插入哈希表name中

conn.hset(name, key, value)

说明: 将哈希表name中的域key的值设置为value,如果key已经存在则覆盖

conn.hsetnx(name, key, value)

说明: 同上,但是如果key已经存在则不覆盖

conn.hvals(name)

说明: 返回哈希表key中所有域的值

6、列表方法:

conn.blpop(keys, timeout=0)

说明: 当列表内没有任何元素可供弹出时,连接将被BLPOP命令阻塞,直到超时或是发现可弹出元素为止

conn.brpop(self, keys, timeout=0)

说明: 当列表内没有任何元素可供弹出时,连接将被BLPOP命令阻塞,直到超时或是发现可弹出元素为止

conn.brpoplpush(self, src, dst, timeout=0)

说明: 从src中尾部pop出一个元素插入到dst头部,阻塞型

conn.lindex(name, index)

说明: 返回name中下标为index的元素,0表示第一个元素, -1标识最后一个元素

conn.linsert(name, where, refvalue, value)

说明: 将value插入list name中的refvalue的where位置,where可以为before/after

conn.llen(name)

说明: 返回列表name的长度

conn.lpop(name)

说明: 移除并返回列表中name的头元素

conn.lpush(name, *value)

说明: 将一个或是多个值插入到列表name的表头

conn.lpushx(name, *value)

说明: 同上,但是仅当name存在并且是一个列表

conn.lrange(name, start, end)

说明: 返回列表name中指定区间内的元素,区间的偏移为star-end,0表示第一个元素,-1标识最后一个元素

conn.lrem(name, count, value)

说明: 移除列表name中与参数value相等的元素,count为0时候移除所有,大于0时移除指定个,小于0时从尾部移除count个匹配元素

conn.lset(name, index, value)

说明: 将列表name下标为index的元素的值设置为value

conn.ltrim(name, start, end)

说明: 修剪列表name从start-end区间的元素,包含start和end

conn.rpop(name)

说明: 从列表name尾部弹出并返回此元素

conn.rpoplpush(src, dst)

说明: 将列表src中的最后一个元素弹出后插入列表dst头部

conn.rpush(name, *values)

说明: 将一个或是多个值value插入列表name的尾部

conn.rpush(name, *values)

说明: 同上,但是仅当value不存在时才会插入到尾部

7、集合方法:

conn.sadd(name, *values)

说明: 将一个或是多个value元素加入到集合key当中,已经存在于集合的value元素将被忽略

conn.scard(name)

说明: 返回集合name的基数(集合中元素的数量)

conn.sdiff(keys, *args)

说明: 返回两个集合的差集

conn.sdiffstore(dest, keys, *args)

说明: 将两个集合的差集保存到dest集合中

conn.sinter(keys, *args)

说明: 返回两个集合的交集

conn.sinterstore(dest, keys, *args)

说明: 将两个集合的交集保存到dest集合中

conn.sismember(name, value)

说明: 判断value是是name集合中的成员

conn.smembers(name)

说明: 返回集合name中所有的成员

conn.move(name, db)

说明: 将集合name移动到指定的数据库

conn.spop(name)

说明: 移除并返回集合中的一个随机元素

conn.srandmember(name, number=None)

说明: 返回集合name中的number个元素,默认为1

conn.srem(name, *values)

说明: 移除集合name中的一个或是多个value元素

sunion(self, keys, *args)

说明: 返回给定集合的并集

sunionstore(dest, keys, *args) 

说明: 将两个集合的并集保存到dest集合中

8、有序集合:

conn.zadd(name, *args, **kwargs)

说明: 将一个或是多个元素以及score加入到有序集合name中

conn.zcard(name)

说明: 返回有序集name的成员数

conn.zcount(name, min, max)

说明: 返回有序集合name中score在min和max之间的成员数量(包含min和max成员)

conn.zincrby(name, value, amount=1)

说明: 为有序集合name的成员value的score加上增量amount

conn.zrange(name, start, end, desc=False, withscores=False, score_cast_func=)

说明: 返回有序集合name中指定区间的成员desc是否逆向排序,withscores是否显示score

conn.zrangebyscore(self, name, min, max, start=None, num=None, withscores=False, score_cast_func=)

说明: 返回有序集合name中score在指定区间的成员,start为开始score,num为返回的个数,withscores是否显示score

conn.zrank(name, value)

说明: 返回集合name中value按照score的排名

conn.zrem(name, *values)

说明: 移除有序集合中的一个或是多个成员

conn.zremrangebyrank(name, min, max)

说明: 移除有序集合name中指定排名区间内的所有成员

conn.zremrangebyscore(name, min, max)

说明: 移除有序集合name中score位于min和max之间的成员

conn.zrevrange(name, start, end, withscores=False, score_cast_func=)

说明: 返回有序集合中指定区间的成员,其中成员的位置按score递减排序,score值相同的按字典逆序排列

conn.zscore(name, value)

说明: 返回有序集合name中成员value的score值

conn.zunionstore(dest, keys, aggregate=None)

说明: 将多个有序集合的并集放到有序集合中dest中

conn.zinterstore(dest, keys, aggregate=None)

说明: 将多个有序集合的交集放到有序集合dest中


你可能感兴趣的:(redis)