redis简单操作

 

关于redis的简单操作:

#链接:https://www.cnblogs.com/wupeiqi/articles/5132791.html
# 下载地址:https://github.com/MicrosoftArchive/redis/releases  下载那个msi的就行
import redis
#简单连接
# r = redis.Redis()
# r.set('what1','哈哈哈')
# r.set('what2','hello')
# print(r.get('what1').decode('utf-8'))
# print(r.get('what2').decode('utf-8'))
#redia连接池
# pool = redis.ConnectionPool(host="127.0.0.1",port=6379,decode_responses=True) #加上decode_responses=True返回的就是字符串形式了,不再是bytes类型了
pool = redis.ConnectionPool(host="127.0.0.1",port=6379)
r = redis.Redis(connection_pool=pool)

# 玩的数据类型操作
# {
#     "name":"chao",值为字符串数字操作
#     "name":[11,22,33],值为列表时的操作
#     "name":"chao",值为字典(hash)时的操作
# }

# # 字符串操作
# #1 简单设置,有效期
# r.set('name','chao',5)  #5的意思是5秒后失效
# # setnx:没有就创建,有就不创建,还用原来的
# r.setnx('name','chaoren')
# print(r.get('name'))
#
# #2 批量设置值和获取值
# r.mset({'k1':'v1','k2':'v2'})
# print(r.mget(['k1','k2']))
#
# #3 getset 设置新值并获取原来的值,如果之前的key没有,这里返回一个None
# print(r.getset('name','hhh'))
# print(r.get('name'))
#
# #4 getrange 对取的值切片,取子序列
# # r.set('kk','你好')
# r.set('kk','helloworld')
# print(r.getrange('kk',0,2).decode('utf-8')) #左右都包括,按字节取,不是按字符取
# #5 setrange
# r.set('name','wudixiaobawang')
# r.setrange('name',2,'sss')
# # r.setrange('name',2,'sssssssssssssssssssssssss')
# print(r.get('name'))
#
# #6 查看字符串长度
# print(r.strlen('name'))
#
# #7 incr  自增
# r.set('age',100)
# print(r.get('age')) #b'100',虽然存的是数字,但是还是按字符串处理的
# print(r.incr('age',1)) #加一操作,101,如果这个key存在就给值加1,不存在就给设置值age2=1,这个方法的返回值是个数字,如果值是字符串,会报错昂
# print(r.incr('age2',1)) #加一操作,101,如果这个key存在就给值加1,不存在就给设置值age2=1,这个方法的返回值是个数字
#
# #8 decr 自减
#
# #9 append 在某个值后面追加一些内容
# r.append('name','???')
# print(r.get('name'))


############################list操作#######################

# 1. 插入列表数据
# r.lpush('gf','铁锤','钢蛋') #多次运行,会给gf多次添加,先推进去的在最后,这样一个顺序
# print([i.decode('utf-8') for i in r.lrange('gf',0,-1)]) #取值,中文
# r.lpush('cc',22,33,11)
# print(r.lrange('cc',0,-1)) #[b'11', b'33', b'22']
# r.lpushx('cc','xxx')  #这个没啥说的
# print(r.lrange('cc',0,-1))  #没有直接获取列表的方法,只能通过lrange来取

#2 llen 查看当前的列表长度
# print(r.llen('cc'))

#3 linsert 插入,在某个值的前面或者后面插入值:
# r.linsert('cc','AFTER','11','chao')
# print(r.lrange('cc',0,-1))

#4 lset 根据索引替换内容
# r.lset('cc',1,'Jaden')
# print(r.lrange('cc',0,-1))

#5 lrem 删除

# r.lrem('cc','chao') #删除所有的chao
# r.lrem('cc','chao',1) #删除第一个的chao,从左往右
# print(r.lrange('cc',0,-1))

#6. lpop 删除,
# print(r.lpop('cc'))  #从左往右删,一个一个删除,返回删除的元素
# print(r.lrange('cc',0,-1))
# r.rpop('cc') #从右往左删

#7 lindex,根据索引查找对应元素
# print(r.lindex('cc',1))
# print(r.lrange('cc',0,-1))

#还有好多其他的,不挨个试了

###################hash操作##########################
import json
#1 hset 设置值
# r.hset('info','name','chao') #info:{'name':'chao'}
# print(r.hget('info','name')) #取值

# 2 hmset 批量设置值
# r.hmset('chao',{'age':18,'hobby':'girl'})
# print(r.hmget('chao','age','hobby')) #[b'18', b'girl']
# print(r.hmget('chao',['age','hobby'])) #[b'18', b'girl']
# print(r.hgetall('chao')) #{b'age': b'18', b'hobby': b'girl'} 字典
#
# r.hmset('Jaden',{'k1':{'a':111},'hobby':'girl'})

# print(r.hgetall('Jaden')) #{b'k1': b"{'a': 111}", b'hobby': b'girl'}注意我们存的深层的字典变成了字符串"{'a':111}",所以注意取出来的值,这个不是json字符串,所以没办法反序列化,所以我们存的时候,可以直接存json字符串r.hmset('Jaden',json.dumps({'k1':{'a':111}),'hobby':'girl'}),还有一种方法:
#r.set('Jaden',json.dumps({'k1':{'a':111},'hobby':'girl'})) #直接将所有的数据都搞成json字符串形式的,插入值不用hset了,直接用set,这个点用的比较多昂

#3 hlen(name),统计name对应的字典的键值对个数

#4 hkeys 取所有的键
# print(r.hkeys('Jaden')) #[b'k1', b'hobby']
#5 r.keys()
# print(r.keys())
# redis 下面的数据结构是: {
#     keys:{hkeys:'xxx'}
# }
#取所有的值:hvals(name)

#6 hexists(name,key) 查看name对应的字典中有没有这个key
# print(r.hexists('Jaden','k1'))
# print(r.exists('Jaden'))

#7 hdel删除某个key
# r.hdel('Jaden','k1')
# print(r.hkeys('Jaden'))
# print(r.hgetall('Jaden'))

###集合不咋用就不说了###

#############来几个总体的redis层操作

# print(r.keys())
# r.delete('what2') #删除一个键
# print(r.keys())
# r.delete(*r.keys()) #删除所有的key,如果没有键,你执行这个指令会报错
# 模糊查询key
# print(r.keys('what*')) #[b'what', b'what1'],模糊查询,*任意多个,?任意一个,h[ae]llo,能匹配hello,hallo,但不能匹配haello,不能匹配hillo,类似正则,但是是人家redis提供的一些模糊匹配的规则

#为某个name设置超时时间
#r.set是对字符串设置过期时间
# r.expire('what',3) #对hash数据设置过期时间,3是秒数
# print(r.keys())

 

 

 

#链接:https://www.cnblogs.com/wupeiqi/articles/5132791.html
# 下载地址:https://github.com/MicrosoftArchive/redis/releases 下载那个msi的就行
import redis
#简单连接
# r = redis.Redis()
# r.set('what1','哈哈哈')
# r.set('what2','hello')
# print(r.get('what1').decode('utf-8'))
# print(r.get('what2').decode('utf-8'))
#redia连接池
# pool = redis.ConnectionPool(host="127.0.0.1",port=6379,decode_responses=True) #加上decode_responses=True返回的就是字符串形式了,不再是bytes类型了
pool = redis.ConnectionPool(host="127.0.0.1",port=6379)
r = redis.Redis(connection_pool=pool)

# 玩的数据类型操作
# {
# "name":"chao",值为字符串数字操作
# "name":[11,22,33],值为列表时的操作
# "name":"chao",值为字典(hash)时的操作
# }

# # 字符串操作
# #1 简单设置,有效期
# r.set('name','chao',5) #5的意思是5秒后失效
# # setnx:没有就创建,有就不创建,还用原来的
# r.setnx('name','chaoren')
# print(r.get('name'))
#
# #2 批量设置值和获取值
# r.mset({'k1':'v1','k2':'v2'})
# print(r.mget(['k1','k2']))
#
# #3 getset 设置新值并获取原来的值,如果之前的key没有,这里返回一个None
# print(r.getset('name','hhh'))
# print(r.get('name'))
#
# #4 getrange 对取的值切片,取子序列
# # r.set('kk','你好')
# r.set('kk','helloworld')
# print(r.getrange('kk',0,2).decode('utf-8')) #左右都包括,按字节取,不是按字符取
# #5 setrange
# r.set('name','wudixiaobawang')
# r.setrange('name',2,'sss')
# # r.setrange('name',2,'sssssssssssssssssssssssss')
# print(r.get('name'))
#
# #6 查看字符串长度
# print(r.strlen('name'))
#
# #7 incr 自增
# r.set('age',100)
# print(r.get('age')) #b'100',虽然存的是数字,但是还是按字符串处理的
# print(r.incr('age',1)) #加一操作,101,如果这个key存在就给值加1,不存在就给设置值age2=1,这个方法的返回值是个数字,如果值是字符串,会报错昂
# print(r.incr('age2',1)) #加一操作,101,如果这个key存在就给值加1,不存在就给设置值age2=1,这个方法的返回值是个数字
#
# #8 decr 自减
#
# #9 append 在某个值后面追加一些内容
# r.append('name','???')
# print(r.get('name'))


############################list操作#######################

# 1. 插入列表数据
# r.lpush('gf','铁锤','钢蛋') #多次运行,会给gf多次添加,先推进去的在最后,这样一个顺序
# print([i.decode('utf-8') for i in r.lrange('gf',0,-1)]) #取值,中文
# r.lpush('cc',22,33,11)
# print(r.lrange('cc',0,-1)) #[b'11', b'33', b'22']
# r.lpushx('cc','xxx') #这个没啥说的
# print(r.lrange('cc',0,-1)) #没有直接获取列表的方法,只能通过lrange来取

#2 llen 查看当前的列表长度
# print(r.llen('cc'))

#3 linsert 插入,在某个值的前面或者后面插入值:
# r.linsert('cc','AFTER','11','chao')
# print(r.lrange('cc',0,-1))

#4 lset 根据索引替换内容
# r.lset('cc',1,'Jaden')
# print(r.lrange('cc',0,-1))

#5 lrem 删除

# r.lrem('cc','chao') #删除所有的chao
# r.lrem('cc','chao',1) #删除第一个的chao,从左往右
# print(r.lrange('cc',0,-1))

#6. lpop 删除,
# print(r.lpop('cc')) #从左往右删,一个一个删除,返回删除的元素
# print(r.lrange('cc',0,-1))
# r.rpop('cc') #从右往左删

#7 lindex,根据索引查找对应元素
# print(r.lindex('cc',1))
# print(r.lrange('cc',0,-1))

#还有好多其他的,不挨个试了

###################hash操作##########################
import json
#1 hset 设置值
# r.hset('info','name','chao') #info:{'name':'chao'}
# print(r.hget('info','name')) #取值

# 2 hmset 批量设置值
# r.hmset('chao',{'age':18,'hobby':'girl'})
# print(r.hmget('chao','age','hobby')) #[b'18', b'girl']
# print(r.hmget('chao',['age','hobby'])) #[b'18', b'girl']
# print(r.hgetall('chao')) #{b'age': b'18', b'hobby': b'girl'} 字典
#
# r.hmset('Jaden',{'k1':{'a':111},'hobby':'girl'})

# print(r.hgetall('Jaden')) #{b'k1': b"{'a': 111}", b'hobby': b'girl'}注意我们存的深层的字典变成了字符串"{'a':111}",所以注意取出来的值,这个不是json字符串,所以没办法反序列化,所以我们存的时候,可以直接存json字符串r.hmset('Jaden',json.dumps({'k1':{'a':111}),'hobby':'girl'}),还有一种方法:
#r.set('Jaden',json.dumps({'k1':{'a':111},'hobby':'girl'})) #直接将所有的数据都搞成json字符串形式的,插入值不用hset了,直接用set,这个点用的比较多昂

#3 hlen(name),统计name对应的字典的键值对个数

#4 hkeys 取所有的键
# print(r.hkeys('Jaden')) #[b'k1', b'hobby']
#5 r.keys()
# print(r.keys())
# redis 下面的数据结构是: {
# keys:{hkeys:'xxx'}
# }
#取所有的值:hvals(name)

#6 hexists(name,key) 查看name对应的字典中有没有这个key
# print(r.hexists('Jaden','k1'))
# print(r.exists('Jaden'))

#7 hdel删除某个key
# r.hdel('Jaden','k1')
# print(r.hkeys('Jaden'))
# print(r.hgetall('Jaden'))

###集合不咋用就不说了###

#############来几个总体的redis层操作

# print(r.keys())
# r.delete('what2') #删除一个键
# print(r.keys())
# r.delete(*r.keys()) #删除所有的key,如果没有键,你执行这个指令会报错
# 模糊查询key
# print(r.keys('what*')) #[b'what', b'what1'],模糊查询,*任意多个,?任意一个,h[ae]llo,能匹配hello,hallo,但不能匹配haello,不能匹配hillo,类似正则,但是是人家redis提供的一些模糊匹配的规则

#为某个name设置超时时间
#r.set是对字符串设置过期时间
# r.expire('what',3) #对hash数据设置过期时间,3是秒数
# print(r.keys())






































posted @ 2019-04-23 21:41  cls超  阅读(173)  评论(0)    收藏  举报