python-redis之数据类型

1、字符串操作

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import redis
redisDB = redis.Redis(host='127.0.0.1',port=6379,db=0)

'''
设置值
set(name, value, ex=None, px=None, nx=False, xx=False)
参数解释:
    name:键
    value:值
    ex:设置过期时间(单位秒)
    px:设置过期时间(单位毫秒)
    nx:默认为false即无论name是否存在都执行
    xx:默认为false即无论name是否存在都执行
注意:
    当键不存在时会创建键值对,如果键存在时会覆盖旧的值
批量设置值:
mset(key1='value1',key2='value2')
mset({'key1':'value1','key2':'value2'})
'''
print redisDB.set('mystr1','hello')#设置成功返回True
print redisDB.set('mystr2','hello 222')#设置成功返回True,相同key会覆盖掉以前的
print redisDB.setex('mystr3','hello 222',5)#设置三秒后失效,返回true设置成功,设置值并设置失效时间
print redisDB.psetex('mystr4',5,'hello 222')#设置5毫秒后失效,返回true设置成功,设置值并设置失效时间
print redisDB.mset(key1='value1',key2='value2')#批量设置
print redisDB.mset({'key1':'value1','key2':'value2'})#批量设置
'''
获取值:
    get()#获取单个值
    mget()#批量获取值
'''
print redisDB.get('key1')
print redisDB.mget(['key1','key2'])
'''
设置新值,获取旧值
    getset()
'''
print redisDB.getset('key1','newvalue')#取到旧值
print redisDB.getset('key5','newvalue')#取不到,设置新值
'''
按照切片进行获取
    getrange()
'''
redisDB.set('mystr','111111111111')
print redisDB.getrange('mystr',0,5)#获取索引0-5
print redisDB.getrange('mystr',0,30)#如果最大值超过字符串长度则获取整个字符串
print redisDB.getrange('mystr',30,50)#如果最小值大于字符串长度,则获取为空
'''
获取字符串的长度
    strlen()
'''
print redisDB.strlen('mystr')#有则返回字符串长度
print redisDB.strlen('none')#没有键,就返回0
'''
编辑字符串的内容
    setrange()
'''
print redisDB.set('mystr','111')
print redisDB.setrange('mystr',1,'2')#范围之内替换
print redisDB.get('mystr')#121
print redisDB.setrange('mystr',5,'666')#超出返回添加
print redisDB.get('mystr')#121666
print redisDB.setrange('mystr',1,'666666')#从第二个开始替换
print redisDB.get('mystr')#1666666
print redisDB.setrange('none',2,'6666')#没有键,以666为值进行设置
print redisDB.get('none')# 66666
'''
给字符串进行追加
    append()
'''
print redisDB.set('mystr','000')
print redisDB.get('mystr')
print redisDB.append('mystr','111')#返回字符串总长度,并从后进行追加
print redisDB.get('mystr')

'''
对字符串为数字的操作
incr(name,amount)
    name:键
    amount:步长
    设置自增
decr(name,amount)
    name:键
    amount:步长
    设置自减
incrbyfloat(name,amount)
    可以设置自增为浮点的数
'''
print redisDB.set('mynum',5)
print redisDB.get('mynum')#5
print redisDB.incr('mynum',3)#8,返回自增后的结果
print redisDB.get('mynum')#8
print redisDB.decr('mynum',5)#3 返回自减后的结果
print redisDB.get('mynum')#3
print redisDB.incrbyfloat('mynum',0.5)#3.5 返回自加后的结果
print redisDB.incrbyfloat('mynum',-0.5)#3.0 返回自减后的结果
print redisDB.get('mynum')#3.5

2、列表操作

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import redis
redisDB = redis.Redis(host='127.0.0.1',port=6379,db=0)
'''
lpush()往左边插入,相当于py的列表insert(0,item)
'''
redisDB.lpush('mylist',3)
redisDB.lpush('mylist',4)
redisDB.lpush('mylist',5,6,7)
print redisDB.lrange('mylist',0,-1)#['7', '6', '5', '4', '3']
'''
rpush()往右边添加,相当于py的列表append(item)
'''
redisDB.rpush('mylist',1)
redisDB.rpush('mylist',2)
redisDB.rpush('mylist',3,4,5)
print redisDB.lrange('mylist',0,-1)#['1', '2', '3', '4', '5']
'''
只有当键存在时才进行插入或者追加操作,否则返回0
rpushx()
lpushx()
'''
redisDB.rpushx('mylist',8)#只有在mylist存在的时候才向右进行追加,没有则返回0
redisDB.lpushx('mylist',0)#只有在mylist存在的时候才向左进行添加,没有则返回0
print redisDB.lrange('mylist',0,-1)

'''
llen()获取列表的长度
lrang(key,start,end)#按照起始点来进行切片
lindex()#按照索引取值
'''
print redisDB.llen('mylist')
print redisDB.lrange('mylist',0,redisDB.llen('mylist'))#获取列表所有元素
print redisDB.lrange('mylist',0,-1)#获取列表所有元素
print redisDB.lindex('mylist',5)#按照索引取值
'''
lpop()#从左边进行pop,列表减少
rpop()#从右边进行pop,列表减少一个元素
'''
print redisDB.lpop('mylist')#从左边进行pop
print redisDB.rpop('mylist')#从右边进行pop
print redisDB.lrange('mylist',0,-1)

'''
linsert(name, where, refvalue, value):
    name:键
    where:before 找到要插入的值(第一个)在值之前插入,after找到要插入的值(第一个)在值之后插入
    refvalue:列表中的值
    value:要插入的值
'''
redisDB.linsert('mylist','AFTER',3,'test')#找到第一个为3的元素,在此元素之后插入元素'test'
'''
lset(name,index,value)#按照索引对列表中的元素重新赋值
'''
redisDB.lset('mylist',5,'new_val')#重新赋值
'''
lrem(name,value,num)
    value:值
    num=0#删除所有的value
    num=1#从前往后只删除第一个
    num=-1#从后往前只删除第一个
'''
redisDB.lrem('mylist',5,num=0)
'''
ltrim(name,start,end)#删除在该索引范围之外的值
'''
redisDB.ltrim('mylist',3,5)#只保留索引在3,5之间的数据


'''
rpoplpush(src, dst)#从一个列表中取出最右边添加到另外一个列表的最左边
'''
redisDB.rpush('list1',1,2,3)
redisDB.rpush('list2',1,2,3)
redisDB.rpoplpush('list1','list2')
print redisDB.lrange('list2',0,-1)
'''
blpop(keys, timeout=0)#表示从左边开始进行pop
brpop(keys, timeout=0)#表示从右边开始pop
'''
redisDB.lpush('list1',1,2,3)
redisDB.lpush('list2',1,2,3)
while True:
    print redisDB.blpop(['list1','list2'],timeout=0)
    print redisDB.lrange('list1',0,-1),redisDB.lrange('list2',0,-1)

3、hash操作

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import redis
redisDB = redis.Redis(host='127.0.0.1',port=6379,db=0)

redisDB.hset('myhash','k1','v1')#创建一个hash字典,向字典中添加一组键值对
print redisDB.hget('myhash','k1')#从hash字典中获取一个值

redisDB.hset('myhash','k1','v')#如果在myhash中有k1就更新k1,否则重新添加键值对
print redisDB.hgetall('myhash')#获取myhash中所有的键值对

redisDB.hmset('myhash',{'k1':'v1','k2':'v2'})#一次添加多个键值对
print redisDB.hmget('myhash',['k1','k2'])#一次获取多个键对应的值

print redisDB.hlen('myhash')#获取hash的长度
print redisDB.hkeys('myhash')#获取hash中的所有key
print redisDB.hvals('myhash')#获取has中的所有value

print redisDB.hexists('myhash','key')#判断key是否在myhash中

redisDB.hdel('myhash','k1')#删除指定的键值对

redisDB.hincrby('myhash','mynum',amount=1)#将字典中的元素自增
redisDB.hincrbyfloat('myhash','mynum',amount=1.0)#将字典中的元素自增
原文地址:https://www.cnblogs.com/aadmina/p/9337021.html