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中