python 操作redis

2018-08-23  本文已影响0人  Four__years

Redis是一个基于内存的键值对存储系统,常用作数据库、缓存和消息代理。它支持字符串、字典、列表、集合、有序集合、位图、地理位置、HyperLogLog等多种数据结构,所以常常被称作为数据结构服务器。Redis支持事务、切片、主从复制,支持RDB(将内存中的数据保存在文件中)和AOF(类似于MySQL的binlog)两种持久化方式,还支持订阅分发、Lua脚本、集群(Redis3.0加入的功能)等特性。接下来记录一下在Python中操作Redis:

安装Redis

sudo apt-get install redis-server

安装redis模块

sudo pip install redis

配置redis.conf

redis.conf目录:/etc/redis/redis.conf

将
bind 127.0.0.1
改为:
bind 0.0.0.0

使用如下命令使配置生效:

redis-server /etc/redis/redis.conf

操作模式

redis-py提供提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py

import redis
# "192.168.10.10"为远程Redis地址,port为Redis默认端口号
client = redis.Redis(host="192.168.10.10",port=6379)
# 存储键值对
client.set("name","python")
# 取出key为"name"的键对应的值
client.get("name")

连接池

redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池

import redis
pool = redis.ConnectionPool(host="192.168.10.10",port=6379)
r = redis.Redis(connection_pool=pool)
result = r.get("info")

常见操作

字符串相关操作

# 第一次
cursor1,data = r.hscan("province",cursor=0)
# 第二次
cursor2,data = r.hscan("province",cursor=cursor1)
...
依次迭代,当返回的游标值为0时表示全部获取完毕,值得注意的是只有当"province"对应的字典中含有大量数据时,redis才会有采取分片操作(大概在513条数据左右)

列表相关操作

集合相关操作

有序集合相关操作

其他常用操作

管道

redis-py默认在执行每次请求都会创建(连接池申请链接)和断开(归还连接池)一次链接操作。如果想要在一次请求中指定多个命令,则可以使用pipeline实现一次请求指定多个命令

import redis

pool = redis.ConnectionPool(host="192.168.10.10",port=6379)
r = redis.Redis(connection_pool=pool)

pipe = r.pipeline(transaction=True)

pipe.set(name,value)
pipe.set(name2,value2)

pipe.execute()

设置密码

修改Redis的配置文件/etc/redis/redis.conf

requirepass 123456

需重启Redis生效

注意:redis的查询速度是非常快的,外部用户一秒内可以尝试多大150K个密码;所以密码要尽量长(对于DBA 没有必要必须记住密码);

Redis的优点

上一篇 下一篇

猜你喜欢

热点阅读