Redis缓存存储
Redis是一个基于内存的 、高效的键值型非关系型数据库,存取效率极高,而且支持多种数据存储结构,使用起来也非常简单。
1.准备工作
安装Redis并能正常运行。除了安装好Redis数据库外,还需要安装好redis-py库,即用来操作Redis的Python包,可以使用pip3来安装:
pip3 install redis
2.Redis和StrictRedis
redis-py库提供Redis和StrictRedis两个类,用来实现Redis命令对应的操作。
StrictRedis类实现了绝大部分官方的Redis命令,参数也一一对应,例如set方法就对应Redis命令的set方法。而Redis类是StrictRedis类的子类,其主要功能是向后兼容旧版本库里的几个方法。为了实现兼容,Redis类是StrictRedis类的子类,其主要功能是向后兼容旧版库里的几个方法。为了实现兼容,Redis类对方法做了改写,例如将lrem方法中value和num参数的位置互换,这和Redis命令行的命令参数是不一致的。官方推荐使用StrictRedis类。
3.连接Redis
我们先在本地安装好Redis,并运行在6379端口,将密码设置为123456。可以用如下实例连接Redis并测试:
from redis import StrictRedis
redis = StrictRedis(host='localhost', port=6379, db=0, password='123456')
redis.set('name', 'Bob')
print(redis.get('name'))
这里传入了Redis的地址、运行端口、使用的数据库和密码信息。在默认不传数据的情况下,这4个参数分别为localhost、6379、0和None。然后声明了一个StrictRedis对象,并调用对象的set()方法,设置了一个键值对。最后调用get方法获取了设置的键值并打印出来。
运行结果如下:
b'Bob'
这说明我们成功连接了Redis,并且可以执行set和get操作了。
当然,还可使用ConnectionPool来连接Redis,实例代码如下:
from redis import StrictRedis, ConnectionPool
pool = ConnectionPool(host='localhost', port=6379, db=0, password='123456')
redis = StrictRedis(connection_pool=pool)
这样的连接效果是一样的。观察源码可以发现,StrictRedis内其实就是用host和port等参数又构造了一个ConnectionPool,所以直接将ConnectionPool当作参数传给StrictRedisy也一样。
另外,ConnectionPool还支持通过URL来构建连接。URL支持的格式有如下3种:
redis://[:password]@host:port/db
rediss://[:password]@host:port/db
unix://[:password]@/path/to/socket.sock?db=db
这3种URL分别表示创建Redis TCP连接、Redis TCP+SSL连接、Redis UNIX socket连接。我们只需要构造其中任意一种即可,其中password部分如果有则可以写上,如果没有也可以省略。下面再用URL连接演示一下:
url = 'redis://123456@localhost:6379/0'
pool = ConnectionPool.from_url(url)
redis = StrictRedis(connection_pool=pool)
这里我们使用的是第一种格式。首先,声明一个Redis连接字符串,然后调用from_url方法创建ConnectionPool,接着将其传给StrictRedis即可完成连接,所以使用URL的连接方式还是比较方便的。
4.键操作
键的一些判断和操作方法
接下文 数据的存储--Redis缓存存储(二)https://developer.aliyun.com/article/1618959