Python操作Redis

昨天,我们讨论了python如何连接redis。今天我们要学习如何用python操作redis的数据。

这里,再补充一下。redis是key-value形式的数据库。可以存储多种格式的数据。

今天,我们就是尝试下,这些常用的api。

1.设置数据:

r = redis.Redis(host='127.0.0.1', port=6379)

#若是key存在,就修改,不存在,就添加

r.set('zcx', '123999')

#time:是指缓存过期时间,单位秒

r.setex(key,value, time)

#time:是指缓存过期时间,单位秒

r.setex(key,value, time)

#time:是指缓存过期时间,单位毫秒

r.psetex(key,value, time)

这两个,都是批量设置

r.mset(zcx='123', zcx1='456')

r.mget({"zcx": '888', "zcx1": '999'})

2.获取数据

get(name)

批量获取:

r.mget("zcx", "zcx1")

li = ["zcx", "zcx1"]

r.mget(li)

3.获取原来的值并设置新的值:注意get 和set拼起来的

getset(name, value)

4.按数据内容的长度取值

getrange(key, start, end)

print(r.getrange('zcx', 0, 1))

5.根据key,在对应的值的指定位置插入值

setrange(key, offset, value)

6.对2进制进行位操作

setbit(key, offset, value)

7.获取2进制某一位的值

getbit(name, offset)

8.获取2进制某一段的值

bitcount(key, start=None, end=None)

9.返回对应数据的长度

strlen(key)

10.对某个数进行加法运算

incr(self, key, amount=1)

r.incr('zcx',1)

print(r.get('zcx'))

r.incr('zcx',5)

print(r.get('zcx'))

输出:

b'124'

b'129'

按后面的小数进行增长

incrbyfloat(self, name, amount=1.0)

与incr的功能相反

decr(self, key, amount=1)

11.为name追加内容

append(key, value)

12.存取字典

r.hset("zcx", "zcx1", "8888")

print(r.hget("zcx", "zcx1"))

#取所有的字典

print(r.hgetall("zcx"))

输出:

b'8888'

{b'zcx1': b'8888'}

13.批量存取字典

dic = {"zcx": "111111", "zcx1": "2222222"}

r.hmset("my", dic)

print(r.hget("my", "zcx"))

print(r.hgetall("my"))

test=["zcx","zcx1"]

print(r.hmget("my",test))

print(r.hmget("my","zcx","zcx1"))

14.获取字典的属性和对应值:长度,个数

dic = {"zcx": "1111", "zcx1": "2222"}

r.hmset("my", dic)

#获取长度

print(r.hlen("my"))

#获取所有key

print(r.hkeys("my"))

#获取所有值

print(r.hvals("my"))

15.判断是否存在

print(r.hexists('my', 'zcx'))

输出:

True

16.删除字典的key

hdel('my','zcx')

17.列表操作

lpush(key,val)

#每个新的元素都添加到列表的最右边

rpush(key,val)

#在key对应的list中添加元素,只有key已经存在时,值添加到列表的最左/右边

lpushx(key,value)

rpushx(key,value)

llen(key)#求长度

r.linsert("my","BEFORE","55555","66666")#在前后插入值

r.lset(key, index, value)#对某个位置的数据重新复制

r.lrem(key, value,position)#position删除指定位置的值。position>0从左往右数位置,否则从右向左

lpop(key)#移除元素

lindex(key, index)#根据索引取元素

lrange(key, start, end)#根据索引取范围数据

ltrim(key, start, end)#移除列表内没有在该索引之内的值

rpoplpush(src, target)#合并列表。从src取出最右边的元素,同时将其添加至target的最左边

blpop(key, timeout)#移除数据

18.Set集合操作

Set集合就是不允许重复元素的列表

sadd(key,value)#设置值

smembers(key)#获取值

scard(key)#获取长度

sdiff(keys, *args)#取差

sdiffstore(target, keys, *args)#把sdiff获取的值加入到target中

sinter(key, *args)#取并

sinterstore(target, keys, *args)#获取多个key对应集合的并集,在加入到target中

sismember(key, value)#检查元素

smove(src, target, value)#把某个元素从一个集合中移动到另外一个集合

spop(key)#移除

srandmember(key, num)#随机取值,num是长度

srem(key, values)#删除key中的某些值

sunion(keys, *args)#获取多个keys对应的集合的并集

sunionstore(target,keys, *args)#sunion的结果存入target

zadd(key, *args, **kwargs)#有序集合

zcard(key)#有序集合的元素

zcount(key, min, max)#有序集合的元素在min和max范围中的数

zincrby(key, value, amount)

# 按照索引范围获取key对应的有序集合的元素

result=r.zrange("my",0,1,desc=False,withscores=True,score_cast_func=int)

print(result

'''参数:

key

start 有序集合索引起始位置

end 有序集合索引结束位置

desc 排序规则,默认按照分数从小到大排序

withscores 是否获取元素的分数,默认只获取元素的值

score_cast_func 对分数进行数据转换的函数'''

zrevrange(key, start, end, withscores=False, score_cast_func=float)#同zrange,集合是从大到小排序

zrank(key, value)、zrevrank(key, value)#获取元素所在位置

zscore(key, value)

zrem(key, val)#删除key对应的有序集合中值是val成员

zremrangebyrank(key,min, max)#根据范围删除

zremrangebyscore(key, min, max)

zinterstore(target, keys, aggregate=None)#合并集合。进行笛卡儿积运算

zunionstore(target, keys, aggregate=None)#合并集合放入target

delete(*names)#删除

exists(name)

keys(pattern='*')#模式匹配

expire(key,time)#设置超期时间

rename(a, b)

move(key, db))#将可以移动到另一个db下

randomkey()#生成随机key

type(key)#获取可以对应的类型

以上就是python操作redis的部分API。其实,在实际应用中,能用到三分之一就不错了。但是,一定要了解提供了那些API,将来在用的时候,才知道从哪方面去思考。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容