Python3之Redis模块

本文详细介绍了Python3如何使用redis-py模块连接和操作Redis,包括安装、使用连接池、各种API操作如String、Hash、List、Set、Ordered Set等,以及管道和发布订阅功能。还提供了实际应用示例,如实现基于Redis的Session存储。
摘要由CSDN通过智能技术生成

安装Redis

安装

模块GitHub地址:https://github.com/WoLpH/redis-py

[root@anshengme ~]# yum -y install redis

配置绑定的IP

在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
[root@anshengme ~]# vim /etc/redis.conf 
bind 0.0.0.0

启动并设置开机自启动

[root@anshengme ~]# systemctl start redis
[root@anshengme ~]# systemctl enable redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.

检查

查看端口

[root@anshengme ~]# netstat -tlnp | grep "redis"
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      1439/redis-server 0 

数据写入测试

[root@anshengme ~]# /usr/bin/redis-cli 
127.0.0.1:6379> set url https://blog.ansheng.me
OK
127.0.0.1:6379> get url
"https://blog.ansheng.me"
127.0.0.1:6379> exit

安装redis-py

安装redis-py

pip3 install redis

或源码安装

python setup.py install

检查安装是否成功

# 导入模块没报错则安装成功
>>> import redis

入门及使用

# 导入模块
>>> import redis
# 连接到Redis服务器
>>> conn = redis.Redis(host='192.168.56.100', port=6379)
# 写入一条数据
>>> conn.set('name','ansheng')
True
# 获取一条数据
>>> conn.get('name')
b'ansheng'
>>> conn.get('url')
b'https://blog.ansheng.me'

使用连接池连接到Redis

Behind the scenes, redis-py uses a connection pool to manage connections to a Redis server. By default, each Redis instance you create will in turn create its own connection pool. You can override this behavior and use an existing connection pool by passing an already created connection pool instance to the connection_pool argument of the Redis class. You may choose to do this in order to implement client side sharding or have finer grain control of how connections are managed.

>>> pool = redis.ConnectionPool(host='192.168.56.100', port=6379)
>>> conn = redis.Redis(connection_pool=pool)
>>> conn.set('hello','world')
True
>>> conn.get('hello')
b'world'

使用套接字连接

>>> r = redis.Redis(unix_socket_path='/tmp/redis.sock')

API

redis-py提供的API用来操作redis

String API

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

参数 描述
ex 过期时间(秒)
px 过期时间(毫秒)
nx 如果设置为True,则只有name不存在时,当前set操作才执行
xx 如果设置为True,则只有name存在时,岗前set操作才执行
>>> conn.set('k1', 'v1', ex=10, nx=True)
True
>>> conn.get('k1')
b'v1'
>>> conn.get('k1')

setex(name, value, time)

设置过期时间/秒

>>> conn.setex('k','v',1)
True
>>> conn.get('k')

psetex(name, time_ms, value)

设置过期时间/毫秒

>>> conn.psetex('k',10,'v')
True
>>> conn.get('k')

setnx(name, value)

设置值,只有key不存在时,执行设置操作

>>> conn.get('k1')
>>> conn.setnx('k1','v1')
True
>>> conn.get('k1')
b'v1'
>>> conn.setnx('k2','v2')
False

**mset(*args, kwargs)

同时设置多个key/value

>>> conn.mset(k1='v1', k2='v2')
True
>>> conn.mset({'k1':'v1', 'k1':'v1'})
True

get(name)

获取单个值

>>> conn.get('k1')
b'v1'

*mget(keys, args)

获取多个值

>>> conn.mget('k1','k2')
[b'v1', b'v2']
# 传入列表
>>> conn.mget(['name','url'])
[b'ansheng', b'https://blog.ansheng.me']

getset(name, value)

设置新值并获取原来的值

>>> conn.set('hello', 'world')
True
>>> result = conn.getset('hello', 'Linux')
>>> result
b'world'
>>> conn.get('hello')
b'Linux'

getrange(key, start, end)

通过索引的方式来获取value的值

>>> conn.set('key','value')
True
>>> conn.getrange('key', 1, 4)
b'alue'

setrange(name, offset, value)

根据索引修改value

>>> conn.set('n','123456789')
True
>>> conn.setrange('n', 0, 'a')
9
>>> conn.get('n')
b'a23456789'

setbit(name, offset, value)

getbit(name, offset)

获取value对应某一个索引位置对应的值0/1

>>> conn.getbit('k',1)
1

bitcount(key, start=None, end=None)

获取key对应二进制中表示1的个数

*bitop(operation, dest, keys)

将多个值进行值运算,得出的结果保存到一个新值当中

>>> conn.mset(n1='abc',n2='cde',n3='adc')
True
>>> conn.bitop('AND','now_key','n1','n2','n3')
3
>>> conn.get('now_key')
b'a`a'
>>> conn.mget('n1','n2','n3')
[b'abc', b'cde', b'adc']

operation支持AND(并)、OR(或)、NOT(非)、XOR(异或)

strlen(name)

获取value的长度

>>> conn.set('name','安生')
True
>>> conn.strlen('name')
6

incr(name, amount=1)

对name的value进行自增,如果name不存在则创建,否则自增

>>> conn.g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值