Python学习_20 Nosql


Python学习_20 Nosql
1、Nosql简介
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。指一系列关系型数据库
2、Python操作redis
a.python安装redis模块,用pip install redis 安装
b.链接redis服务器
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2018/5/15 20:25
# @Auther: xiexiaolong
# @File: 0515.PY
import redis
r = redis.Redis( host = "192.168.1.1" , port = 6379 , password = "myredis" )
r.set( "yanzi" , "iiaaa" )
print (r.get( "yanzi" ))
结果:
"C:\Program Files\Python36\python.exe" D:/python/0427/0515.py
b'iiaaa'

Process finished with exit code 0
c.redis连接池
redis-py使用connection来管理对一个redis server的所有链接,避免每次建立、释放连接的开锁。默认每个redis实力都会维护一个自己的链接。可以直接建立一个连接池,然后作为redis参数,这样就可以实现多个redis实例共享一个连接池
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2018/5/15 20:25
# @Auther: xiexiaolong
# @File: 0515.PY
import redis
pool = redis.ConnectionPool( host = "192.168.1.1 " , port = 6379 , password = "myredis" )
r = redis.Redis( connection_pool =pool)
r.set( "yanzi" , "yanzi123" )
print (r.get( "yanzi" ))
d、string操作
set(name, value, ex=None, px=None, nx=False, xx=False)
在redis中设置值,默认,不存在则创建,存在则修改
参数:
ex 过期时间(秒)
px 过期时间(毫秒)
nx 如果设置为True,则只有name不存在时,当前set操作才执行
xx 如果设置为True,则只有name存在时,当前set操作才执行
get(name)    获取value值
mset(name1="yanzi",name2="xie")    批量设置值,()为dict类型
mget('name1','name2')    批量获取key的值,()为tuple类型
append(name,value)    name对应的值后面追加内容
e、lisit操作
redis中存储list类型的数据是在内存中,一个name对应一个list
lpush(name,value) 增加,类似list的append,l是left意思,从左边新增加,没有就新建,每个新的元素都添加到列表的最左边
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018\5\17 0017 0:36
# @Author : xiexiaolong
# @File : demon1.py
import redis
pool = redis.ConnectionPool(host="192.168.1.1 ",port=6379,password="myredis")
r = redis.Redis(connection_pool=pool)
r.lpush("list1",22)
r.lpush("list1",4,3,7)
这样,list1在redis保存的值是:7,3,4,22
rpush从右向左操作
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018\5\17 0017 0:36
# @Author : xiexiaolong
# @File : demon1.py
import redis
pool = redis.ConnectionPool(host="192.168.1.1 ",port=6379,password="myredis")
r = redis.Redis(connection_pool=pool)
r.rpush("list1",22)
r.rpush("list1",4,3,7)
这样,list1保存的值是:22,4,3,7
llen(name):name对应的list的长度
linsert(name,where,refvalue,value)  新增(固定索引号位置插入元素)
name:list对应的key值
where: BEFORE或AFTER
refvalue:list中的某个元素,意思在他前后插入数据
value:要插入的数据
r.linsert( "list1" , "AFTER" , "test2" , "hello" )
在列表list1的值test2后面插入hello
lset(name,index,value):对name对应的list中的某一个索引位置重新赋值
lrem(name,value,num): 在name对应的list中删除指定的值
参数:
name:redis的name
value: 要删除的值
num:  num=0  删除列表中所有的制定值;
             num=2,从前到后,删除2个;
             num=-2,从后到前,删除2个
r.lrem("list2", "11", 1) # 将列表中左边第一次出现的"11"删除
r.lrem("list2", "99", -1) # 将列表中右边第一次出现的"99"删除
r.lrem("list2", "22", 0) # 将列表中所有的"22"删除
lpop(name): 在name对应的列表的左侧获取第一个元素,并在列表中移除,返回删除的那个元素的值
rpop(name):表示从右到左
lindex(name,index):在name对应的列表中根据索引取列表元素
print(r.lindex("list2", 0))  # 取出索引号是0的值
lrange(name,start,end): 在name对应的列表分片获取数值
print(r.lrange("list2", 0, -1)) # 切片取出值,范围是索引号0到-1(最后一个元素)
f、set操作
set:不重复的list
sadd(name, values):新增,name对应的集合中添加元素
r.sadd("set_name","aa","bb")
smembers(name):获取对应的集合的所有元素
scard(name):获取name对应的集合中的元素个数
sismember(name, value):检查value是否是name对应的集合内的元素
spop(name):从集合的右侧移除一个元素,并将其返回
srem(name, value)  :删除集合中的某个元素
sunion(keys, *args):获取多个name对应的集合的并集
print(r.sunion("set1", "set2")) # 取2个集合的并集
r.sinter(“set_name1”, “set_name2”)  交集
g、hash操作
redis在内存中存储hash类型是以name对应一个字典形式存储的
hset(name,key,value):name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
参数:
name:redis的name
key:key1对应的hash中的key
value:value1对应的hash中的value
hget(name,key:在name对应的hash中获取根据key获取value
hmset(name,mapping):在name对应的hash中批量设置键值对
参数:
name:redis的name
mapping:字典,如{'k1':'v1','k2','v2'}
hmget(name,keys,*args):在name对应的hash中获取多个key的值
参数:
name:redis对应的name
keys:要获取key的集合,如:['k1','k2','k3']
*args:要获取的key,如:k1,k2,k3
print(r.hmget('test','k1','k2'))   #获取多个值
print(r.hget("hash2", "k2")) # 单个取出"hash2"的key-k2对应的value 
print(r.hmget("hash2", "k2", "k3")) # 批量取出"hash2"的key-k2 k3对应的value --方式1 
print(r.hmget("hash2", ["k2", "k3"])) # 批量取出"hash2"的key-k2 k3对应的value --方式2
hgetall(name):获取name对应hash的所有键值
hlen(name):获取name对应的hash中键值的个数
hkeys(name):获取name对应的hash中所有的key的值
hvals(name):获取name对应的hash中所有的value的值
hexists(name,key):检查name对应的hash是否存在当前传入的key
hdel(name,*keys):将name对应的hash中指定key的键值对删除
h、其他操作
delete(*names):根据name删除redis中的任意数据类型
exists(name):检测redis的name是否存在
keys(pattern='*'):根据* ?等通配符匹配获取redis的name
expire(name ,time):为某个name设置过期时间
rename(src, dst):重命名
move(name, db)):将redis的某个值移动到指定的db下
type(name):获取name对应值的类型
flushall:删除所有的key

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值