zoukankan      html  css  js  c++  java
  • 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,将来在用的时候,才知道从哪方面去思考。

  • 相关阅读:
    日历
    复数的运算
    大数的计算
    poj 1562
    POJ 1002
    利用正则表达式检测违禁字
    js实现一个闹钟
    jQuery实现五星好评
    jquery实现计算器功能
    横向轮播图
  • 原文地址:https://www.cnblogs.com/zijiyanxi/p/7604623.html
Copyright © 2011-2022 走看看