安装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