python redis 操作 博客园_python操作redis

python-redis模块

连接redis数据库

直接连接

import redis

red = redis.Redis(host='localhost',port=6379,db=1)

连接池连接

连接池的原理是, 通过预先创建多个连接, 当进行redis操作时, 直接获取已经创建的连接进行操作, 而且操作完成后, 不会释放, 用于后续的其他redis操作,这样就达到了避免频繁的redis连接创建和释放的目的, 从而提高性能。redis模块采用ConnectionPool来管理对redis server的所有连接。

import redis

pool = redis.ConnectionPool(host='localhost', port=6379,db=1)

red = redis.Redis(connection_pool=pool)

red.set('key1', 'value1')

red.set('key2', 'value2')

String类型存取:

set(self, name, value, ex=None, px=None, nx=False, xx=False)

#在Redis中设置值,默认不存在则创建,存在则修改

red.set('key', 'value')

#参数:

# set(name, value, ex=None, px=None, nx=False, xx=False)

# ex,过期时间(秒)

# px,过期时间(毫秒)

# nx,如果设置为True,则只有key不存在时,当前set操作才执行,同#setnx(key, value)

# xx,如果设置为True,则只有key存在时,当前set操作才执行

setex(self, name, value, time)

#设置过期时间(秒)

psetex(self, name, time_ms, value)

#设置过期时间(豪秒)

mset(self, *args, **kwargs)

#批量设置值

red.mget({"key1":'value1', "key2":'value2'})

get(self, name)

#获取某个key的值

red.get('key1')

mget(self, keys, *args)

#批量获取

red.mget("key1","key1")

strlen(self, name)

#返回key对应值的字节长度(一个汉字3个字节)

red.strlen("key")

append(name, value)

#在name对应的值后面追加内容

red.set("key","value")

print(r.get("key")) #输出:'value'

r.append("key","one")

print(r.get("key")) #输出:'valueone'

Hash类型:一个name对应一个dic字典来存储。

hset(self, name, key, value)

#name对应的hash中设置一个键值对(不存在,则创建,否则,修改)

red.hset("name","key","value")

hget(self, name, key)

red.hset("name","key","value")

#在name对应的hash中根据key获取value

print(red.hget("name","key"))#输出:'value'

hgetall(self, name)

#获取name所有键值对

red.hgetall("name")

hmset(self, name, mapping)

#在name对应的hash中批量设置键值对,mapping:字典

dic={"key1":"aa","key2":"bb"}

red.hmset("name",dic)

print(red.hget("name","key2"))#输出:bb

hmget(self, name, keys, *args)

#在name对应的hash中批量获取键所对应的值

dic={"key1":"aa","key2":"bb"}

red.hmset("name",dic)

print(red.hmget("name","key1","key2"))#输出:['aa', 'bb']

hlen(self, name)

#获取hash键值对的个数

print(red.hlen("name"))#输出:2

hkeys(self, name)

#获取hash中所有key

red.hkeys("name")

hvals(self, name)

#获取hash中所有value

red.hvals("name")

hexists(self, name, key)

#检查name对应的hash是否存在当前传入的key

print(red.hexists("name","key1"))#输出:Ture

hdel(self, name, *keys)

#删除指定name对应的key所在的键值对,删除成功返回1,失败返回0

print(red.hdel("name","key1"))#输出:1

hincrby(self, name, key, amount=1)

#与hash中key对应的值相加,不存在则创建key=amount(amount为整数)

print(red.hincrby("name","key",amount=10))#返回:10

list类型:一个name对应一个列表存储。

lpush(self, name, *values)

#元素从list的左边添加,可以添加多个

red.lpush('name','元素1','元素2')

rpush(self, name, *values)

#元素从list右边添加,可以添加多个

red.rpush('name','元素1','元素2')

lpushx(self, name, *values)

#当name存在时,元素才能从list的左边加入

red.lpushx('name','元素1')

rpushx(self, name, *values)

#当name存在时,元素才能从list的右边加入

red.rpushx('name','元素1')

llen(self, name)

#name列表长度

red.llen('name')

linsert(self, name, where, refvalue, value)

# 在name对应的列表的某一个值前或后插入一个新值

red.linsert("name","BEFORE","元素2","元素1.5")#在列表内找到第一个"元素2",在它前面插入"元素1.5"

#参数:

# name: redis的name

# where: BEFORE(前)或AFTER(后)

# refvalue: 列表内的值

# value: 要插入的数据

lset(self, name, index, value)

#对list中的某一个索引位置重新赋值

red.lset("name",0,"abc")

lrem(self, name, value, num=0)

#删除name对应的list中的指定值

red.lrem("name","元素1",num=0)

# 参数:

# name: redis的name

# value: 要删除的值

# num: num=0 删除列表中所有的指定值;

# num=2 从前到后,删除2个;

# num=-2 从后向前,删除2个'''

lpop(self, name)

#移除列表的左侧第一个元素,返回值则是第一个元素

print(red.lpop("name"))

lindex(self, name, index)

#根据索引获取列表内元素

print(red.lindex("name",1))

lrange(self, name, start, end)

#分片获取元素

print(red.lrange("name",0,-1))

ltrim(self, name, start, end)

#移除列表内没有在该索引之内的值

red.ltrim("name",0,2)

set类型:集合是不允许重复的列表

sadd(self, name, *values)

#给name对应的集合中添加元素

red.sadd("name","aa")

red.sadd("name","aa","bb")

scard(self, name)

#获取name对应的集合中的元素个数

red.scard("name")

smembers(self, name)

#获取name对应的集合的所有成员

red.smembers('name')

sdiff(self, keys, *args)

#在第一个name对应的集合中且不在其他name对应的集合的元素集合

red.sadd("name","aa","bb")

red.sadd("name1","bb","cc")

red.sadd("name2","bb","cc","dd")

print(red.sdiff("name","name1","name2"))#输出:{aa}

sismember(self, name, value)

#检查value是否是name对应的集合内的元素

smove(self, src, dst, value)

#将某个元素从一个集合中移动到另外一个集合

spop(self, name)

#从集合的右侧移除一个元素,并将其返回

其他常用操作

flushdb(self,asynchronous=False)

#清空当前db中的数据,默认是同步。若开启异步asynchronous=True,会新起一个线程进行清空操作,不阻塞主线程

flushall(self,asynchronous=False)

#清空所有db中的数据,默认是同步。异步同flushdb

delete(self, *names)

#根据name删除redis中的任意数据类型

exists(self, name)

#检查redis的name是否存在

keys(self, pattern='*')

#根据* ?等通配符匹配获取redis的name

expire(self,name ,time)

#为某个name的设置过期时间

rename(self, src, dst)

#重命名

move(self, name, db))

# 将redis的某个name移动到指定的db下

randomkey(self)

#随机获取一个redis的name(不删除)

type(self, name)

# 获取name对应值的类型

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值