python redis模块笔记

import redis

host ='127.0.0.1'
passwd = 'HK139bc&*'

'''
1、连接Redis数据库
'''
# (1)直连
red = redis.Redis(host=host,password=passwd,port=6379,db=0,decode_responses=True)
# decode_responses=True 直接返回字符串(默认返回的是bytes类型)
# db=0 指定库,0-15,默认为0
# port=6379 默认端口,默认是6378

# (2)连接池连接
pool = redis.ConnectionPool(host=host,password=passwd,db=0,decode_responses=True)
r = redis.Redis(connection_pool=pool)

'''
2、Sring类型存取
'''

# (1)单个设置、获取值
# set(self, name, value, ex=None, px=None, nx=False, xx=False)
# get(self, name)

#参数:
#     set(name, value, ex=None, px=None, nx=False, xx=False)
#     ex,过期时间(秒)
#     px,过期时间(毫秒)
#     nx,如果设置为True,则只有key不存在时,当前set操作才执行,同#setnx(key, value)
#     xx,如果设置为True,则只有key存在时,当前set操作才执行
# 默认不存在则创建,存在则修改
red.set('name','xiaobai')
red.set('age','18')
r.set('sex','man')

result = red.get('name')
print()
print(r.get('age'))
# print(result.decode()) #decode是把bytes类型变成字符串
# 连接时加上可以加上decode_responses,直接返回字符串

# (2) 批量设置值、获取值
r.mset({'addr':'gz','phone':'13033990099'})
res = r.mget('addr','phone')
print(res)

# (3)单独设置过期时间
#设置过期时间(秒) setex(self, name, time,value)
r.setex('count',1,20)

#设置过期时间(毫秒) psetex(self, name, time_ms, value)
r.psetex('pcount',100,25)
print('count===',r.get('count'))
print('pcount===',r.get('pcount'))

# strlen(self, name)  返回key对应值的字节长度(一个汉字3个字节)
s = red.strlen('name')
print('s==',s)

# append(name, value) #在name对应的值后面追加内容
r.append('addr',',天河区')
addr = r.get('addr')
print('addr:',addr)

# r.delete('count') #删除指定的key
# flushdb(self,asynchronous=False) 清空当前db中的数据,默认是同步。若开启异步asynchronous=True,会新起一个线程进行清空操作,不阻塞主线程
# r.flushdb() #清除当前数据库里面所有的key
# r.flushall() #清除所有数据库里面的所有key
r.exists('name') #检查redis的name是否存在
# keys(self, pattern='*') #根据* ?等通配符匹配获取redis的name
print(r.keys())#获取到当前 数据库里面有哪些key
# expire(self,name ,time) 为某个name的设置过期时间
# rename(self, src, dst) #重命名
# move(self, name, db)) 将redis的某个name移动到指定的db下
# randomkey(self)#随机获取一个redis的name(不删除)
# type(self, name) 获取name对应值的类型

'''
3、Hash类型:一个name对应一个dic字典来存储
'''
# hset(self, name, key, value) name对应的hash中设置一个键值对(不存在,则创建,否则,修改)
r.hset('scount','xiaobai',98)
r.hset('scount','xiaohei',68)

# hget(self, name, key) #在name对应的hash中根据key获取value
xh = r.hget('scount','xiaohei')
print('xh==',xh)

# hgetall(self, name) #获取name所有键值对
all = r.hgetall('scount')
print('all:',all)

# hmset(self, name, mapping) 批量设置
dict = {'red':'红色','green':'绿色','blue':'蓝色'}
r.hmset('color',dict)
print(r.hget('color','red'))

# hmget(self, name, keys, *args) 批量获取
colors = r.hmget('color','red','blue')
print('colors:',colors)

# hlen(self, name) 获取hash键值对的个数
c = r.hlen('color')
print(c)

# hkeys(self, name) #获取hash中所有key
# hvals(self, name) 获取hash中所有value
ks = r.hkeys('color')
vs = r.hvals('color')
print('ks:%s,vs:%s'%(ks,vs))

# hexists(self, name, key) 检查name对应的hash是否存在当前传入的key
e = r.hexists('color','red')
print(e)

# hdel(self, name, *keys) #删除指定name对应的key所在的键值对,删除成功返回1,失败返回0
print(r.hdel('color','black'))

# hincrby(self, name, key, amount=1) 与hash中key对应的值相加,不存在则创建key=amount(amount为整数),返回 相加后的总和
print(r.hincrby('color','num',amount=20))
print('totalNum:',r.hget('color','num'))

'''
4、list类型:一个name对应一个列表存储
'''
# lpush(self, name, *values) 元素从list的左边添加,可以添加多个
# rpush(self, name, *values) 元素从list右边添加,可以添加多个
r.lpush('list1','value1','value2')
r.lpush('list1','v3','v4')
r.rpush('list1','v5','v6')
print(r.lrange('list',0,-1))

# lpushx(self, name, *values)  当name存在时,元素才能从list的左边加入
# rpushx(self, name, *values) 当name存在时,元素才能从list的右边加入

# llen(self, name) name列表长度
l = r.llen('list')
print('l:',l)

# linsert(self, name, where, refvalue, value) 在name对应的列表的某一个值前或后插入一个新值
#参数:
#     name: redis的name
#     where: BEFORE(前)或AFTER(后)
#     refvalue: 列表内的值
#     value: 要插入的数据
r.lpush('jj','aa','bb','cc')
print(r.lrange('jj',0,-1))
r.linsert('jj','BEFORE','aa','00') # 在ss列表元素‘ww’前面插入‘yy’
print(r.lrange('jj',0,-1))

# lset(self, name, index, value) 对list中的某一个索引位置重新赋值
r.lset('list',3,'newValue')
print(r.lrange('list',0,-1))


# lrem(self, name, value, count=0) 删除name对应的list中的指定值
# 参数:
#    name:  redis的name
#    value: 要删除的值
#    num:   num=0 删除列表中所有的指定值;
#           num=2 从前到后,删除2个;
#           num=-2 从后向前,删除2个'''

r.lrem(name='list',count=0,value='v4')
print(r.lrange('list',0,-1))

# lpop(self, name) #移除列表的左侧第一个元素,返回值则是第一个元素
print(r.lpop('list'))

# lindex(self, name, index) #根据索引获取列表内元素
print(r.lindex('list',2))

# lrange(self, name, start, end) #分片获取元素
print(r.lrange('list',2,5))

# ltrim(self, name, start, end) 移除列表内没有在该索引之内的值
r.ltrim('list',0,10)
print(r.lrange('list',0,-1))

'''
5、set类型:集合是不允许重复的列表
'''
# sadd(self, name, *values) 给name对应的集合中添加元素
# scard(self, name) 获取name对应的集合中的元素个数
# smembers(self, name) 获取name对应的集合的所有成员
r.sadd('s','mail','qq','phone')
count = r.scard('s')
m = r.smembers('s')
print('count:',count)
print('mmb:',m)

# sdiff(self, keys, *args) 对比两个集合,返回在第一个name对应的集合中且不在其他name对应的集合的元素集合
r.sadd('s1','mail','sms','ww')
r.sadd('s2','wx','bk','pp')
res1 = r.sdiff('s','s1','s2')
print(res1)

# sismember(self, name, value) 检查value是否是name对应的集合内的元素
s1 = r.sismember('s1','mail')
print('s1:',s1)

# smove(self, src, dst, value) #将某个元素从一个集合中移动到另外一个集合
r.smove('s2','s','wx')
print(r.smembers('s'))

# spop(self, name) 从集合的右侧移除一个元素,并将其返回  ??? 此方法待确认,Set是无序的,不能确定移除的是哪一个,慎用

print(r.smembers('s1'))
r.spop('s1')
print(r.smembers('s1'))


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值