python加redis使用教程_使用Python操作Redis数据库

安装与连接

安装redis

使用python操作redis,需要先安装redis模块,请使用以下命令安装

pip3 install redis或python3 -m pip install redis

连接redis

redis库提供了两个类Redis和StrictRedis来实现Redis的命令操作。

StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令(如:SET命令对应StrictRedis.set方法)。Redis是StrictRedis的子类,用于向后兼容旧版本的redis库的几个方法。

官方推荐使用StrictRedis,所以本文主要使用StrictRedis类来进行相关的操作。

注:连接前请确保Redis数据库已经安装

直接连接

import redis

REDIS_CONFIG = {

'host': 'localhost', # IP

'port': 6379, # 端口

'password': 'abcd1234', # 密码

'db': 0, # 数据库

'decode_responses': True # 将存入的数据进行解码(主要用于将bytes类型转成string类型)

}

r = redis.StrictRedis(**REDIS_CONFIG)

r.set('name', 'Tom')

print(r.get('name'))

运行结果如下:

Tom

上面例子中,REDIS_CONFIG是连接Redis所用到配置参数字典,我们在创建连接对象的时候,这个字典中的参数通过解包(**REDIS_CONFIG)的形式传入。

r.set(key, value)传入一个键值对,r.get(key)获取指定键的值。

连接池连接

redis库使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。

连接池的作用相当于缓存了多个客户端与redis服务端的连接,当有新的客户端进来连接时,只需要在连接池获取一个连接即可。

import redis

REDIS_CONFIG = {

'host': 'localhost', # IP

'port': 6379, # 端口

'password': 'abcd1234', # 密码

'db': 0, # 数据库

'decode_responses': True

}

pool = redis.ConnectionPool(**REDIS_CONFIG) # 创建连接池

r1 = redis.StrictRedis(connection_pool=pool)

r2 = redis.StrictRedis(connection_pool=pool)

r1.set('name1', 'Jack')

r2.set('name2', 'Rose')

print(r1.get('name1'), r2.get('name2'))

运行结果如下:

Jack Rose

上面例子中创建了一个连接池pool,redis实例r1和r2共享一个连接池。

redis库的常用方法

set()和get()

set(name, value):在Redis中设置值,不存在则创建,存在则修改

get(name):获取Redis中指定键的值,不存在返回None

print(r.get('name'))

r.set('name', 'Jack')

print(r.get('name'))

r.set('name', 'Rose')

print(r.get('name'))

结果如下

None

Jack

Rose

此外set()方法还有两个参数来设置键的过期时间,分别是ex(秒)和px(毫秒)

r.set('name', 'Tony', ex=3)

print(r.get('name'))

time.sleep(3)

print(r.get('name'))

结果如下

Tony

None

可以看出,设置3秒有效时间,3秒过后,该键值对自动从库中删除。

mset()和mget()

mset(*args, **kwargs)的作用是批量设置值

mget(keys, *args)的作用是批量获取值

items = {

'city1': 'Beijing',

'city2': 'Shanghai',

'city3': 'Hong Kong',

}

r.mset(items)

key_list = ['city1', 'city2', 'city3']

print(r.mget(key_list))

结果如下

['Beijing', 'Shanghai', 'Hong Kong']

Hash操作

hset(name, key, value):在name对应hash中设置一个键值对(不存在则创建,否则为修改)

hget(name, key):在name对应的hash中根据key值来获取value

r.hset('class1', 'name', 'Ben')

r.hset('class2', 'name', 'Jane')

print(r.hget('class1', 'name'))

print(r.hget('class2', 'name'))

结果如下

Ben

Jane

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

hmget(name, keys, *args):在name对应的hash中获取多个key的值

hgetall(name):获取name对应hash的所有键值

mapping = {

'name': 'Kim',

'age': 21,

'sex': 'female'

}

r.hmset('class', mapping)

key_list = ['name', 'age', 'sex']

print(r.hmget('class', key_list))

print(r.hgetall('class'))

结果如下

['Kim', '21', 'female']

{'name': 'Kim', 'age': '21', 'sex': 'female'}

hdel(name, *keys):删除指定name对应的key所在的键值对

mapping = {

'name': 'Kim',

'age': 21,

'sex': 'female'

}

r.hmset('class', mapping)

print(r.hgetall('class'))

r.hdel('class', 'sex')

print(r.hgetall('class'))

结果如下

{'name': 'Kim', 'age': '21', 'sex': 'female'}

{'name': 'Kim', 'age': '21'}

List操作

lpush(name, values):在name对应的list中添加元素,每个新的元素都添加到列表的最左边

rpush(name, values):在name对应的list中添加元素,每个新的元素都添加到列表的最右边

llen(name):获取name对应的list元素的个数

lrange(name, start, end):分片获取元素(start为0, end为-1时获取全部元素)

r.lpush('mylist1', 1)

r.lpush('mylist1', 2, 3, 4)

print(r.lrange('mylist1', 0, -1))

r.rpush('mylist2', 1)

r.rpush('mylist2', 2, 3, 4, 5)

print(r.lrange('mylist2', 0, -1))

print(r.llen('mylist1'), r.llen('mylist2'))

结果如下

['4', '3', '2', '1']

['1', '2', '3', '4', '5']

4 5

lrem(name, value, num):删除name对应的list中的指定值(num为该值的个数)

data_list = [1, 3, 5, 3, 5, 3, 1]

r.rpush('mylist', *data_list) # *的作用是将data_list解包传入

print(r.lrange('mylist', 0, -1))

r.lrem('mylist', 2, 3) # 删除列表中的两个3(从左到右删除)

print(r.lrange('mylist', 0, -1))

结果如下

['1', '3', '5', '3', '5', '3', '1']

['1', '5', '5', '3', '1']

以上就是在python中连接和操作redis的常用方法,如果想了解更多的话可以去相关的官方网站查询。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值