zoukankan      html  css  js  c++  java
  • python操作redis

    1、先看下redis的连接

    import redis
    
    # 连接服务端
    r = redis.Redis(host="127.0.0.1",port=6379)
    
    #获取所有的key值
    print(r.keys())
    
    
    #获取某个键的value
    print(r.get("name"))
    
    # 设置一个键值对
    r.set("name","ddd",ex=3)
    

     

    2、在看下redis的连接池,创建一个连接池,并且连接该连接池

    connect_pool = redis.ConnectionPool(host="1.1.1.1",port=6379)
    
    r = redis.Redis(connection_pool=connect_pool)
    
    r.set("age",23,ex=2)
    print(r.get("age"))
    

    3、下面是redis的重点,操作包括dict,list,set,有序集合,hash的操作

    # 3、操作
    # 过期时间
    #   ex 单位是秒钟
    #   px 单位是毫秒
    #   nx 如果设置为True,则只有name不存在时候,当前set操作才执行
    #   xx 如果设置为True,则治愈后name存在的时候,当前set操作才执行
    
    r.setnx()
    #设置值,只有name不存在的时,执行设置操作
    
    #批量get值
    r.mget()
    
    #批量设置值
    r.mset()
    
    #设置新的值然后获取老的值
    r.getset()
    
    
    # #获取value的子序列,根据字节提取,非字符
    #    参数:
    #         name Redis的name的值
    #         start  起始位置字节
    #         end    结束位置字节
    r.getrange(key="name",start=1,end=2)
    
    
    #修改字符串的内容,从指定的字符串索引开始向后替换,如果新的值过长,则向后添加
      # 参数:
      #       offset 字符串的索引,字节,一个汉字3个字节
      #       value   要设置的值
    # r.setrange(name,offset,value)
    # 比如name=12345
    # r.setrange(name,2,"abcde")
    # 最后name的值为1abcde
    
    
    
    #对name对应的二进制表示的位进行操作
       # 参数
       #     name      redis的name
       #     offect    位的索引(将值变换成二进制后进行索引)
       #     value     值只能是1或者0
       #
    
    # r.setbit(name,7,0)
    #把name的value值用SCSI码表示,然后把第七位替换为0或者1
    # r.setbit()
    
    
    # 查看第6位的SCSI码数,从1开始数
    # r.getbit("name",6)
    
    
    #看一个例子,比如要统计uv,就是每天有多少用户访问我们的网站
    # r.setbit("uv_count",id,1)
    
    # r.setbit("uv_count",1,1)
    # r.setbit("uv_count",2,1)
    # r.setbit("uv_count",4,1)
    # print(r.bitcount("uv_count"))
    
    #先把uv_count的值设置为0,然后每个用户都有自己的id,那么每个用户过来,id为1,我们就把第1位设置为1,id为100,我们就把
    #第100位设置为1,bitcount的方法就是统计value中的1的数量
    
    
    # 返回value的长度,一个汉字是3个字节
    print(r.strlen("name"))
    
    
    #如果name存在,则自加1,如果name不存在,则创建name并赋值为1,统计pv的时候有用
    # r.incr("name",1)
    
    #和incr的效果一样,不过这个是自减
    # r.decr()
    
    
    #对name的value的值后面追加内容,追加的内容为aaaaa,就是拼接字符串
    r.append("name","aaaa")
    
    
    
    #Hash操作,存dict
    
    # name             hash
    #
    # name1 ----------> k1-->v1
    #                   k2-->v2
    #                   k3-->v3
    #
    #
    #
    #
    # name2 ----------> k1-->v1
    #                   k2-->v2
    #                   k3-->v3
    
    
    
    # 单独设置hash
    r.hset("stu_info","stu1","a")
    r.hset("stu_info","stu2","b")
    r.hset("stu_info","stu3","c")
    
    #批量设置hash
    r.hmget("stu_info",{"stu4":"d","stu5":"e","stu6":"f"})
    
    # 获取指定的hash值
    r.hget("stu_info","stu3")
    
    #获取全部的hash值
    r.hgetall("stu_info")
    
    
    #获取name对应的hash中的键值对的个数
    r.hlen()
    
    
    #获取name对应的hash中所有的key的值
    r.hkeys()
    
    
    #获取name对应的hash中的所有的value的值
    r.hvals()
    
    #检测name对应的hash是否存储在当前传入的key
    # r.hexists(name,value)
    
    
    #将name对应的hash中指定的key键值对删除
    # r.hdel()
    
    
    #给name对应的hash中的key的value的值自加1
    r.hincrby()
    
    
    
    
    #list操作,存list
    
    #添加元素,从左边push,从右边pus
    
    r.lpush()
    r.rpush()
    
    #获取list的值,需要加一个范围
    r.lrange("")
    
    #获取长度
    r.llen()
    
    
    # 插入值
    # r.linsert(name,where,refvalue,value)
    
    # where = before|after
    # refvalue  list中某个元素的值,在这个值后面获取前面插入一个值,在找到的第一个元素前面或者后面
    # value    插入的值
    
    
    
    # r.ltrim(name,start,end)
    #在name对应的列表中移除没有在start-end索引之间的值
    
    
    
    #set操作,集合操作,set集合就是不允许重复的列表
    
    #最终的list中只有一个1和一个3,为name对应的集合添加元素
    r.sadd("set_list","1","3","1")
    
    #查看某个name的集合的元素,但是会带一个优先级
    r.sscan()
    
    #获取name对应的集合的元素的个数
    r.scard()
    
    
    #比较2个都在redis中的set的差集,求在set1对应的集合,且不在set2对应的集合的值的集合
    r.sdiff("set1","set2")
    
    
    #把a和b对应的集合存到c对应的集合中
    r.sdiffstore("a","b","c")
    
    
    #求name为a对应的集合和name为b对应的集合的交集
    r.sinter("a","b")
    
    
    
    
    #判断value是否在name对应的集合中
    
    # r.sismember(name,value)
    
    
    
    #获取某个name对应的集合的元素
    r.smembers()
    
    
    
    #将name为a对应的集合中的元素"c"移到name为b对应的集合中,a中就没有这个原始怒
    r.smove("a","b","c")
    
    
    
    #从集合的右侧(尾部)移除第一个成员,并将其返回
    r.spop()
    
    #删除随机的h获取number个元素
    r.srandmember("name",20)
    
    
    ##删除某个值
    r.srem()
    
    
    #获取多个name对应的集合的并集
    r.sunion()
    
    
    #获取b、c、d。。。。。的集合的并集,并将结果保存到a对应的集合中
    # r.sunionstore("a","b","d","d".....)
    
    
    #有序集合的操作
    #有序集合,在集合的基础上,为每个元素排序,元素的排序需要根据另外一个值来决定,
    #元素有2个值,即值和分数,分数专门用来做排序
    
    #值为a,分数为10,值为b,分数为4,分数小的靠前
    r.zadd("name","a",10,"b",4)
    
    #查看有序集合的元素的值
    r.zscan()
    
    #获取有序集合的长度
    r.zcard()
    
    
    #获取有序集合中分数在[min,max]之间的个数
    r.zcount()
    
    #可以自增有序集合中某个元素的分数
    r.zincrby()
    
    
    #获取name对应的集合中分数在34和59的元素
    r.zrangebyscore("name",34,59)
    
    
    #删除某个k
    r.delete()
    
    
    #判断某个k是否存在
    r.exists()
    
    #给某个k设置超时时间
    r.expire()
    
    
    #g重命名某个k的名字
    r.rename()
    
    
    #将name中的某个值移到db中
    # r.move(name,db)
    
    
    
    #随机获取个name的值,但是不删除
    r.randomkey()
    
    
    #获取name对应的值类型
    r.type()
    
    
    #redis默认有16个库
    # select 2,切换到库2中
    

      

  • 相关阅读:
    Xen虚拟机的创建和启动
    Linux Shell编程基础
    虚拟化的概念
    Android XML解析
    Android数据存储之文件存储
    Android GPRS开关软件(APN开关)
    数据中心
    debian下dos2unix的安装
    linux Shell重定向
    GPRS开关软件一些问题的解决方法
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7498621.html
Copyright © 2011-2022 走看看