西区代码小仓库 - redis
type: channel
link: https://www.lisper517.top/tag/redis/
items: Python，爬虫与深度学习（15）——番外篇（四）Redis数据库与python
items: frp+云服务器搭建能从外网访问的redis、mysql

Python，爬虫与深度学习（15）——番外篇（四）Redis数据库与python
type: item
date: 2022-09-16T03:54:00+00:00
description: 步骤/目录： 1.Redis简介与安装 2.redis的数据结构 （1）string （2）list （3）set （4）hash （5）zset （6）HLL 3.redis的一些命令 4.redis事务 5.TTL（time to live） 6.排序 7.发布/订阅 8.管道 9.redis GEO 10.其他本文首发于个人博客https://lisper517.top/index.php/archives/53/，转载请注明出处。本文的目的是初步介绍Redis、为爬虫使用redis打好基础，主要整理自 runoob教程 。这里介绍的内容非常浅显，更深入的内容请自行查询书籍。本文写作日期为2022年9月15日。运行的平台为win10和树莓派，编辑器为VS Code。1.Redis简介与安装Redis是一个由 Salvatore Sanfilippo 在2008年开始创造的 key-value 存储系统，是一种开源的非关系型（NoSql）数据库，它的特点有：基于内存，分布式，键值对，支持多种语言的API（Redis本身是由ANSI C写的）。虽然它主要在内存中运行，但也可以将数据保存在磁盘；它支持主从式的数据备份；它的读写性能极高（所以把Redis开放到公网上时还要注意安全性）；它支持事务，多个操作可以打包到一起，要么不执行，要么全部执行（all or nothing）；它支持5种数据类型（字符串，列表，hash散列，集合，有序集合）；它支持推送，key过期。总的来说Redis就是好。在使用Redis时，你可以把它用作主数据库，也可以用作辅数据库，不论何种方式，都是对关系型数据库功能的极大补充。由于redis的一些特性，它特别适合做存储标签这种一对多的工作，而存储标签在mysql这样的关系型数据库中比较麻烦；redis可以设置键的过期时间TTL（time to live），到期后自动过期，这是很多服务都需要的（比如登录cookie的过期）；redis的读写效率非常高，在轻度使用中很少会遇到redis是瓶颈的情况；redis的命令比sql要简单得多（因为它以键值对形式存储数据）。下面介绍三种安装redis的方法。需要注意，redis为了效率而牺牲了安全性，所以默认情况下redis几乎没有保护措施，不要把它开放到外网。在windows上安装redis：window版redis由热心网友维护，版本远落后于linux版或docker版（目前是5.0和7.0的差距），所以不推荐下载。需要的话，建议在windows上用docker安装redis，见 Docker入门（一） 。如果嫌麻烦的话，到 windows版redis下载网页 下载zip文件或msi文件，解压或安装即可。解压zip文件，或用msi文件安装后，在cmd中进入redis目录，运行 redis-server.exe redis.windows.conf 即可运行redis服务器端。然后在同样的目录下，运行 redis-cli.exe -h 127.0.0.1 -p 6379 即可连接到redis数据库。但是要注意，目前它的版本只有5.0，笔者在后续将演示redis使用tls双向验证，但这是redis 6.0后才加入的功能。所以有条件的话还是用docker装redis。在linux上：到 https://download.redis.io/releases/ 下载tar.gz文件，解压、 make 即可。具体过程为：mkdir /usr/local/redis cd /usr/local/redis wget https://download.redis.io/releases/redis-7.0.4.tar.gz #最新版本的redis tar -xzf redis-7.0.4.tar.gz cd redis-7.0.4 apt-get install pkg-config make gcc libssl-dev #一些依赖项 make BUILD_TLS=yesBUILD_TLS=yes 这个选项在redis 6.0以后可用，是用tls在传输层对redis通信加密的一种方式，在后续安全性的部分会提到。这里介绍一下如何用docker安装redis（安装docker、docker-compose请参考 Docker入门（一） 和 Docker入门（二））。在linux上使用如下命令（windows上也是一样的步骤，只是路径改一下）：mkdir -p /docker/redis/data/redis vim /docker/redis/docker-compose.yml写入如下内容：version: "3.9" services: redis: image: redis p…

frp+云服务器搭建能从外网访问的redis、mysql
type: item
date: 2022-01-30T16:00:00+00:00
description: 步骤/目录： 1.在windows笔记本上下载并配置redis-server 2.购买阿里云服务器，安装frp并配置frps服务器端 3.配置frpc客户端 4.开启服务并验证 5.附录：mysql+frp （1）修改配置 （2）创建远程连接用户 （3）赋予用户权限并刷新退出 （4）打开端口 （5）修改frpc.ini并开启frp本文首发于个人博客https://lisper517.top/index.php/archives/3/，转载请注明出处。本文实验日期2022年1月31日。采用windows笔记本（跑redis服务器）+阿里云服务器（系统镜像Ubuntu 20.04）1.在windows笔记本上下载并配置redis-serverredis官方不建议在windows下运行redis，所以并未提供windows版redis下载。有一些其他大神更新了windows版redis，以下推荐2个：首先是微软版redis。由微软方提供，于2016年7月1日更新了3.0.504版后停止更新。其次是tporadowski版redis（推荐）。由github用户tporadowski提供，目前最新版本为2021年10月18日更新的Redis 5.0.14 for Windows。（若遇到github网页无法打开，可在gitee上注册并导入仓库后下载）（根据runoob网站，Redis5.0新增了Stream数据结构，所以还是下新版的好）对于tporadowski版redis，下载.zip包，解压到安装目录即可。解压完毕后，打开Redis文件夹，编辑redis.windows.conf文件，需要修改3处：将bind 127.0.0.1行注释掉。这一行是仅允许从本地访问redis；用frp应该不用改，但是笔者需要在局域网中访问，所以还是打开了。 将protected-mode yes改为protected-mode no。老版本的redis可能没有这一行，如果没有则建议重新下载新版redis； 新增一行：requirepass 你的密码。由于redis的处理速度较快，建议密码设置的复杂一些。配置完成后，打开cmd命令行，cd到redis文件夹（也可以将redis文件夹添加到系统路径），输入redis-server redis.windows.conf，正常显示redis服务器端界面，即可。在linux下redis的配置也差不多，不同的是linux下redis的配置文件是redis.conf。2.购买阿里云服务器，安装frp并配置frps服务器端首先介绍一下frp。frp分为frps（server）和frpc（client），其中frps运行在有公网ip的云服务器上，frpc运行在内网中的机器上。frp主要用于把内网机器的端口映射到云服务器端口，比如把内网机器的22端口（一般用于ssh）映射到云服务器的6000端口，那么访问云服务器的6000端口即可接入内网机器的ssh服务。如果有其他方法搞到公网ip，也可以跳过这一步。随便选择一个便宜的服务器，购买后安装镜像，这里选择的系统镜像是Ubuntu 20.04。在左侧 服务器运维-远程连接 中设置一下root账户密码，然后下载putty，通过putty连接：连接类型为SSH，端口为默认的22，主机地址填云服务器的ip地址。输入root和root密码后即登录到云服务器。目前frp最新版本为0.38.0（2021年10月25更新）。这里安装frp到/bin目录下（wget github速度慢可以换成gitee上的仓库）：cd /bin wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz tar -zxvf frp_0.38.0_linux_amd64.tar.gz mv frp_0.38.0_linux_amd64 frp cd frp nano frps.ini然后配置一下frps.ini：[common] bind_port = 7000 #frpc上也要有相同的token值 token = 你的密码 #配置log log_file = /var/logs/frps.log log_level = info log_max_days = 3 #frps统计板 dashboard_port = 7500 dashboard_user = wuhuqifei dashboard_pwd = wuhuqifei kcp_bind_port = 7000解读一下配置选项：bind_port是frp使用的端口；token是密码令牌；log是日志相关；dashboard是统计板…