Python工具箱系列(二十五)

Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis是一个nosql数据库。nosql是not-only sql的意思,泛指非关系型数据库。

Redis作为一个内存数据库,特点与优点很多,包括但不限于:

◆性能优秀,数据在内存中,读写速度非常快,支持并发10W QPS。

◆单进程单线程,是线程安全的,采用IO多路复用机制。

◆丰富的数据类型,支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。

◆支持数据持久化。可以将内存中数据保存在磁盘中,重启时加载。

◆主从复制,哨兵,高可用。

◆可以用作分布式锁。

◆可以作为消息中间件使用,支持发布订阅。

与其它nosql数据库(例如mongodb)不同,Redis的定位是作为缓存,存储临时数据和简单的消息队列,这个领域没有强力的竞争对手,Redis一枝独秀。网上对于Redis的教程、讨论非常多,在此不再复述,仅就如何安装与使用python操作Redis进行讨论。

Redis安装

Redis当前最新版本为7.0。稳定版本6.2.2。能够在Linux与MacOS上完美安装,但没有官方支持的Windows版本。虽然有好事者提供了Windows版本,对于大量基于windows平台的开发者而言,合适的途径有:

◆远程Linux服务器或者公有云(阿里云,华为云节点)上安装Redis。

◆本地WSL2/WSL上安装Redis。

◆本地虚拟机上安装Redis。

◆使用docker安装Redis。

基于apt安装,最新的Redis版本是4.0.9。其在ubuntu bionic下的安装过程如下:

echo deb http://packages.dotdeb.org wheezy all >> dotdeb.org.list
echo deb-src http://packages.dotdeb.org wheezy all >> dotdeb.org.list
sudo mv dotdeb.org.list /etc/apt/sources.list.d
wget -q -O - http://www.dotdeb.org/dotdeb.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y redis-server
redis-server --daemonize yes
redis-server --version
systemctl status redis-server

Redis-python安装与使用

安装包的命令如下:

pip install redis

一个简单的示范小程序如下:

import redis

pool = redis.ConnectionPool(host='192.168.0.66', port=6379)
r = redis.Redis(connection_pool=pool)

r.set("boss","zhangsan")
result = r.get("boss")
print(result)

r.set("boss","lisi")
result = r.get("boss")
print(result)

在上述例子中,远程打开Redis服务器。并且使用了连接池要避免反复打开、关闭所造成的性能损失。当初次安装时,这个访问过程一般是失败的,原因是Redis默认绑定在127.0.0.1这个回环地址上,不响应来自网卡的访问。为此,需要编辑/etc/redis/redis.conf文件。也可以使用sed一行命令解决问题。

cat /etc/redis/redis.conf |grep bind
# 直接替换
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis/redis.conf 
cat /etc/redis/redis.conf |grep bind

随后重新启动Redis-server即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python工具箱系列(二十五) - Python技术站

(0)
上一篇 2023年3月31日 下午9:02
下一篇 2023年3月31日 下午9:03

相关文章

  • Python工具箱系列(二十三)

    基于游标得操作 游标是数据库操作的相对底层的能力。简单的操作如下: import mysql.connector import random host = ‘localhost’ user = ‘root’ password = ‘8848is8848’ dbname = ‘demodb’ def fakedata(maxtimes): # 连接数据库 de…

    2023年3月31日
    00
  • Python工具箱系列(十二)

    在计算机世界里只有二进制。唯有人类才会对数据进行类型与价值判断。例如,认为某些文件是文本文件、是WORD/EXCEL文件或者是图片。对于加密算法来说也是一样的,加解密算法处理的只是字节流,根本不关心所谓的文件类型。对于文件来说,存在以下基本操作: ◆ open ◆ close ◆ read ◆ write ◆ delete 在Unix世界中,更是将文件这一概…

    2023年4月2日
    00
  • Python工具箱系列(十五)

    前文讲述加解密时,直接将密钥写在了python源代码中,这肯定不是什么好的手法。应该将这类与代码加功效无关的信息保存到配置中,随时可以需要进行修改。从大的角度来看,配置无非就是以下方式: 保存到配置文件中,格式可以是txt/csv/ini/xml/yaml/json/其它特殊格式等; 保存到数据库中,数据库可以是本地的,也可以是远程的; 特殊情况下,配置信息…

    Python开发 2023年4月2日
    00
  • Python工具箱系列(十三)

    上文介绍了使用AES算法进行文件加解密的代码。但是如果在代码中写死了(hardcode)文件名,每次要加解密文件都要去改python源代码,显然有些太笨了。为此,可以使用命令行参数来在不改动源代码的情况下,对命令行参数所指定的文件进行加/解密操作。也可以指定加解密后输出的文件名称,以方便使用。 我们如下约定: python文件名为aeshandler.py …

    Python开发 2023年4月2日
    00
  • Python工具箱系列(八)

    前面我们提到过,有以下工具都可以开发Python代码: 直接使用Python解释器。运行Python就可以得到一个交互式命令行界面,可以简单的测试代码。作为Python入门,写代码不超过10行,完全可用。如果想开发大型代码,这个真心很难用。 使用IPython,也是命令行界面,但内置非常方便的各种宏与功能。比单纯的Python交互界面强太多。在某些情况下,例…

    2023年4月2日
    00
  • Python工具箱系列(二十六)

    ClickHouse(Click Stream,Data WareHouse)是俄罗斯的 Yandex于2016年开源的用于在线分析处理查询(OLAP:Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告。特别值得称道…

    Python开发 2023年3月31日
    00
  • Python工具箱系列(十八)

    非对称加解密应用广泛,它的存在是致力于解决密钥通过公共信道传输这一经典难题。对称加密有一个天然的缺点,就是加密方和解密方都要持有同样的密钥,而这个密钥在传递过程中有可能会被截获,从而使加解密失效。难不成还要为密钥的传输再做一次加密?这样不就陷入了死循环?或许有人在想,密钥即使被盗取,不还有加密算法保证信息安全吗?但任何算法最终都会被破译,所以不能依赖算法的复…

    Python开发 2023年4月2日
    00
  • Python工具箱系列(三十一)

    Neo4j是一个高性能的开源的,使用Java语言实现的NoSQL图数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。现实中很多数据都是用图来表达的,比如社交…

    python 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部