python-Web游戏开发:构建创新、高效的游戏体验
前言
Python-Web游戏开发是现代游戏开发中的一个重要领域。通过结合Python语言和Web技术,开发者可以构建功能强大、灵活且易于维护的游戏应用程序。本文将介绍Python-Web游戏开发的基础知识、常用库和框架的使用方法,以及创建、部署和测试Web游戏的过程。
1. 介绍
1.1 什么是Python-Web游戏开发
Python-Web游戏开发是指使用Python语言和Web技术来开发和构建游戏应用程序的过程。Python作为一门简洁、易读和功能强大的编程语言,以及Web开发领域广泛应用的各种工具和框架,使得使用Python来构建游戏变得简单、高效和灵活。
1.2 Python-Web游戏开发的优势
Python-Web游戏开发具有以下优势:
- 简洁易读:Python语言的简洁性和可读性使得游戏开发更加高效和易于维护。
- 强大的工具和框架:Python拥有丰富的库和框架,如Flask和Django,能够加速开发过程,提供丰富的功能和插件支持。
- 大量的资源和社区支持:Python拥有庞大的开发者社区和丰富的学习资源,可以轻松获取帮助和解决问题。
- 跨平台支持:Python可以在多个平台上运行,包括Windows、Mac和Linux,为游戏开发提供了更广泛的适用性。
- 效率和性能:Python拥有高效的执行速度和优化工具,可以满足对游戏性能要求的场景。
2. 基础知识
2.1 Python语言基础
Python是一门解释型的高级编程语言,其语法简洁而易于学习。下面介绍一些Python语言的基础知识。
2.1.1 变量和数据类型
在Python中,变量用于存储和表示数据。Python支持多种数据类型,包括整数、浮点数、字符串、布尔值等。下面是一个示例代码:
# 定义变量
name = "John"
age = 25
height = 1.75
is_student = True
# 打印变量值
print("Name:", name)
print("Age:", age)
print("Height:", height)
print("Is Student:", is_student)
2.1.2 控制流程和循环
控制流程和循环结构可以控制程序的执行流程。Python提供了条件语句(if-else)、循环语句(for、while)等。下面是一个示例代码:
# 判断条件并执行不同的代码块
age = 20
if age >= 18:
print("You are an adult")
else:
print("You are a minor")
# 循环输出数字
for i in range(1, 5):
print(i)
# while循环
count = 0
while count < 5:
print(count)
count += 1
2.1.3 函数和模块
函数是一段可复用的代码块,用于执行特定的任务。Python中的函数可以接受参数和返回值。模块是一组相关的函数和类的集合,可以进行模块化开发。下面是一个示例代码:
# 定义函数
def greet(name):
print("Hello,", name)
# 调用函数
greet("John")
# 导入模块
import math
# 使用模块中的函数
result = math.sqrt(16)
print("Square root of 16:", result)
2.2 Web开发基础
Web开发涉及多个概念和技术,包括HTTP协议、客户端和服务端等。下面介绍一些Web开发的基础知识。
2.2.1 HTTP协议
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,是Web的基础。它通过客户端和服务端之间的请求-响应模式进行通信。下面是一个示例代码:
import requests
# 发送HTTP请求
response = requests.get("https://www.example.***")
# 获取响应的状态码和内容
status_code = response.status_code
html_content = response.text
print("Status Code:", status_code)
print("HTML Content:", html_content)
2.2.2 客户端和服务端
Web开发涉及客户端和服务端之间的通信。客户端是用户使用的浏览器或应用程序,而服务端是提供Web资源的计算机。客户端发送HTTP请求,服务器处理请求并返回响应。下面是一个示例代码:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/hello", methods=["GET"])
def hello():
name = request.args.get("name")
return jsonify({"message": f"Hello, {name}!"})
if __name__ == "__main__":
app.run()
2.2.3 前端和后端
Web开发通常分为前端和后端两个部分。前端处理客户端的用户界面,包括HTML、CSS和JavaScript等技术。后端处理服务器端的业务逻辑和数据处理,使用Python编写服务器端代码。下面是一个使用Flask框架实现的前后端交互的示例代码:
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html")
@app.route("/hello", methods=["POST"])
def hello():
name = request.form.get("name")
return jsonify({"message": f"Hello, {name}!"})
if __name__ == "__main__":
app.run()
2.3 常用库和框架
Python提供了许多常用的库和框架,用于加速Web开发过程。下面介绍一些常用的库和框架。
2.3.1 Flask框架
Flask是一个轻量级的Web框架,使用Python编写。它简洁而灵活,易于学习和使用。下面是一个使用Flask框架搭建Web应用的示例代码:
from flask import Flask, request
app = Flask(__name__)
@app.route("/")
def index():
return "Hello, World!"
@app.route("/hello")
def hello():
name = request.args.get("name")
return f"Hello, {name}!"
if __name__ == "__main__":
app.run()
2.3.2 Django框架
Django是一个强大的Web框架,使得构建复杂的Web应用变得简单和高效。它提供了许多功能和工具,如ORM(对象关系映射)、表单处理和用户认证等。下面是一个使用Django框架搭建Web应用的示例代码:
from django.urls import path
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, World!")
def hello(request):
name = request.GET.get("name")
return HttpResponse(f"Hello, {name}!")
urlpatterns = [
path("", index),
path("hello", hello),
]
2.3.3 Redis和MySQL数据库
Redis和MySQL是常用的数据库,在Web开发中被广泛使用。Redis是一个内存数据库,适用于缓存和高速读写的场景。MySQL是一个关系型数据库,适用于存储和处理结构化数据。下面是一个使用Redis和MySQL数据库的示例代码:
import redis
import pymysql
# 连接Redis数据库
redis_client = redis.Redis(host="localhost", port=6379, db=0)
# 连接MySQL数据库
mysql_connection = pymysql.connect(host="localhost", port=3306, user="root", passwd="password", db="mydb")
# 执行Redis命令
redis_client.set("key", "value")
value = redis_client.get("key")
# 执行MySQL查询
mysql_cursor = mysql_connection.cursor()
mysql_cursor.execute("SELECT * FROM mytable")
results = mysql_cursor.fetchall()
for row in results:
print(row)
mysql_cursor.close()
mysql_connection.close()
2.4 内网穿透工具
在开发和部署Web应用时,内网穿透工具可用于将本地的Web服务映射到公网上,以方便远程访问。两个常用的内网穿透工具是NATAPP和Ngrok。下面是一个使用NATAPP进行内网穿透的示例代码:
import requests
# 接口地址
api_url = "http://localhost:4040"
# 获取隧道详情
tunnels_url = f"{api_url}/api/tunnels"
response = requests.get(tunnels_url)
tunnels = response.json()
for tunnel in tunnels["tunnels"]:
name = tunnel["name"]
url = tunnel["public_url"]
print(f"Tunnel Name: {name}, Public URL: {url}")
import http.server
import socketserver
# 设置端口号
PORT = 8000
# 指定文件夹作为根目录
DIRECTORY = "/home/aistudio/work/tpmj_new/"
# 创建一个简单的 HTTP 请求处理器
handler = http.server.SimpleHTTPRequestHandler
# 将当前工作目录设置为根目录
handler.directory = DIRECTORY
# 启动服务器并监听指定的端口
with socketserver.TCPServer(("", PORT), handler) as httpd:
print("Server running at port", PORT)
# 开始接收和处理请求
httpd.serve_forever()
3. 创建Web游戏项目
3.1 项目结构和文件
在创建Web游戏项目时,良好的项目结构和文件组织能够提高开发效率和代码可维护性。下面是一个示例的项目结构:
mygame/
├── app/
│ ├── __init__.py
│ ├── models.py
│ ├── views.py
│ ├── forms.py
│ ├── templates/
│ │ ├── base.html
│ │ ├── index.html
│ │ └── game.html
│ └── static/
│ ├── css/
│ │ └── style.css
│ └── js/
│ └── main.js
├── config.py
├── requirements.txt
└── run.py
3.2 搭建开发环境
在开始开发Web游戏项目之前,需要搭建适合的开发环境。下面是一个示例的开发环境搭建步骤:
- 安装Python解释器和pip包管理器。
- 创建一个虚拟环境,用于隔离项目的依赖。
- 在虚拟环境中安装所需的库和框架,使用pip命令安装。
3.3 配置文件
配置文件用于存储Web游戏项目的配置信息,如数据库连接、API密钥等。下面是一个示例的配置文件:
# config.py
SECRET_KEY = "mysecretkey"
DATABASE_URI = "mysql://username:password@localhost/mydatabase"
REDIS_URL = "redis://localhost:6379/0"
3.4 创建游戏逻辑
在Web游戏项目中,游戏逻辑负责处理游戏的各种功能和交互。下面是一个示例的游戏逻辑代码:
# app/views.py
from flask import render_template, request, jsonify
from app.models import Game
@app.route("/")
def index():
return render_template("index.html")
@app.route("/game", methods=["GET", "POST"])
def game():
if request.method == "POST":
data = request.get_json()
# 处理游戏逻辑
game = Game(data)
result = game.play()
return jsonify(result)
return render_template("game.html")
4. 实现Web游戏功能
4.1 用户认证和授权
用户认证和授权是Web游戏的重要功能,用于验证用户身份和控制用户访问权限。下面是一个示例的用户认证和授权代码:
# app/views.py
from flask import render_template, redirect, url_for, flash
from flask_login import login_user, logout_user, login_required
from app.models import User
from app.forms import LoginForm
@app.route("/login", methods=["GET", "POST"])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user and user.check_password(form.password.data):
login_user(user)
flash("Logged in su***essfully.")
return redirect(url_for("index"))
else:
flash("Invalid username or password.")
return render_template("login.html", form=form)
@app.route("/logout")
@login_required
def logout():
logout_user()
flash("Logged out su***essfully.")
return redirect(url_for("index"))
4.2 游戏界面设计
游戏界面设计负责展示游戏的用户界面和交互元素。下面是一个示例的游戏界面设计代码:
<!-- app/templates/game.html -->
<!DOCTYPE html>
<html>
<head>
<title>Game</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<h1>Game</h1>
<div id="game-board">
<!-- 游戏界面元素 -->
</div>
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
</body>
</html>
4.3 游戏逻辑处理
游戏逻辑处理负责处理游戏的各种逻辑,包括游戏规则、状态管理和事件处理等。下面是一个示例的游戏逻辑处理函数:
# app/models.py
class Game:
def __init__(self, data):
self.data = data
# 初始化游戏状态等
def play(self):
# 处理游戏逻辑
# 返回游戏结果
# 使用Game类
game = Game(data)
result = game.play()
4.4 数据库操作和存储
游戏中的数据可以存储在数据库中,以实现数据的持久化和持续性。下面是一个示例的数据库操作和存储代码:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(128), nullable=False)
def check_password(self, password):
# 验证密码逻辑
# 创建数据库表
db.create_all()
# 使用User模型
user = User(username="john", password="mypassword")
db.session.add(user)
db.session.***mit()
5. 部署和发布
5.1 服务器选型
在部署和发布Web游戏时,需要选择合适的服务器和托管平台。常见的服务器选项包括云服务器(如AWS、Azure)、虚拟私有服务器(VPS)和专用服务器等。下面是一个示例的部署服务器的代码:
from fabric import Connection
# 远程连接服务器
conn = Connection(host="example.***", user="myuser", key_filename="path/to/private_key")
# 执行命令
conn.run("sudo apt-get update")
conn.run("sudo apt-get install nginx")
# 上传文件
conn.put("path/to/local/file", "path/to/remote/file")
# 关闭连接
conn.close()
5.2 部署过程
部署Web游戏涉及多个步骤,如安装服务器环境、上传代码和配置服务器等。下面是一个示例的部署过程代码:
from fabric import Connection
def deploy():
# 连接远程服务器
conn = Connection(host="example.***", user="myuser", key_filename="path/to/private_key")
# 更新代码
conn.run("git pull origin master")
# 安装依赖
conn.run("pip install -r requirements.txt")
# 配置服务器
conn.put("config.py", "/path/to/remote/config.py")
# 重启Web应用
conn.run("sudo systemctl restart myapp")
# 关闭连接
conn.close()
5.3 性能优化和调优
为了提高Web游戏的性能和响应速度,可以进行性能优化和调优。优化措施包括使用缓存、减少网络请求和优化数据库查询等。下面是一个示例的性能优化和调优代码:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
cache = Cache(app, config={"CACHE_TYPE": "simple"})
# 使用缓存
@cache.cached(timeout=60)
@app.route("/")
def index():
return "Hello, World!"
5.4 扩展和高可用性
为了支持更多的用户和保证Web游戏的高可用性,可以进行扩展和部署负载均衡器等。下面是一个示例的负载均衡器配置代码:
from flask import Flask
from flask_rediscluster import RedisCluster
app = Flask(__name__)
redis_cluster = RedisCluster(app)
# 使用负载均衡器
@app.route("/")
def index():
# 访问Redis集群
redis_cluster.set("key", "value")
value = redis_cluster.get("key")
return f"Value: {value}"
6. 调试和测试
6.1 单元测试
单元测试用于验证单个函数、类或模块的正确性。Python提供了多个单元测试框架,如unittest和pytest。下面是一个示例的单元测试代码:
import unittest
class MyTestCase(unittest.TestCase):
def test_add(self):
result = add(2, 3)
self.assertEqual(result, 5)
if __name__ == "__main__":
unittest.main()
6.2 集成测试
集成测试用于测试多个模块或组件之间的交互和整体功能。可以使用Selenium等工具进行Web应用的集成测试。下面是一个示例的集成测试代码:
import unittest
from selenium import webdriver
class MyTestCase(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
def test_login(self):
self.driver.get("http://localhost:5000/login")
username_field = self.driver.find_element_by_id("username")
password_field = self.driver.find_element_by_id("password")
submit_button = self.driver.find_element_by_id("submit")
username_field.send_keys("user")
password_field.send_keys("password")
submit_button.click()
assert "Wel***e" in self.driver.page_source
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
6.3 调试技巧和工具
在开发和测试Web游戏时,调试是一个重要的环节。Python提供了多个调试工具和技巧,如断点调试和日志记录等。下面是一个示例的调试代码:
import logging
# 设置日志级别和格式
logging.basi***onfig(level=logging.DEBUG, format="[%(levelname)s] %(message)s")
def divide(x, y):
try:
result = x / y
logging.debug(f"Result: {result}")
return result
except ZeroDivisionError:
logging.error("Cannot divide by zero.")
divide(10, 0)
7. 进阶主题
7.1 实时通信和WebSocket
实时通信在Web游戏中非常重要,可以使用WebSocket技术实现双向通信。Python提供了多个库和框架,如Flask-SocketIO和Django Channels。下面是一个使用Flask-SocketIO实现实时通信的示例代码:
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
socketio = SocketIO(app)
@app.route("/")
def index():
return render_template("index.html")
@socketio.on("message")
def handle_message(message):
emit("response", {"data": message})
if __name__ == "__main__":
socketio.run(app)
7.2 AI和机器学习在游戏中的应用
人工智能(AI)和机器学习在游戏中有广泛的应用。Python提供了丰富的机器学习库和框架,如TensorFlow和PyTorch。可以使用这些工具来训练游戏AI和实现智能决策。下面是一个示例代码:
import numpy as np
from tensorflow import keras
# 创建样本数据
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([0, 1, 1, 0])
# 创建模型
model = keras.Sequential()
model.add(keras.layers.Dense(2, input_dim=2))
model.add(keras.layers.Activation("relu"))
model.add(keras.layers.Dense(1))
model.add(keras.layers.Activation("sigmoid"))
# 编译和训练模型
model.***pile(loss="binary_crossentropy", optimizer="adam", metrics=["a***uracy"])
model.fit(X, y, epochs=10, batch_size=1, verbose=1)
# 使用模型进行预测
predictions = model.predict(X)
7.3 多人游戏和网络互动
多人游戏和网络互动使得游戏变得更加有趣和具有社交性。可以使用WebSocket和服务器端实现实时的多人游戏互动。下面是一个示例的多人游戏和网络互动代码:
from flask import Flask, render_template, session, request
from flask_socketio import SocketIO, emit, join_room, leave_room
app = Flask(__name__)
app.config["SECRET_KEY"] = "mysecretkey"
socketio = SocketIO(app)
@app.route("/")
def index():
return render_template("index.html")
@socketio.on("join")
def on_join(data):
username = data["username"]
room = data["room"]
session["username"] = username
join_room(room)
emit("message", {"text": f"{username} has joined the room."}, room=room)
@socketio.on("leave")
def on_leave(data):
username = session.get("username")
room = data["room"]
leave_room(room)
session.pop("username", None)
emit("message", {"text": f"{username} has left the room."}, room=room)
if __name__ == "__main__":
socketio.run(app)
7.4 游戏安全和防护
游戏安全和防护是保护玩家和游戏数据的重要方面。可以使用加密算法、防火墙和访问控制等技术来提高游戏的安全性。下面是一个示例的游戏安全和防护代码:
from flask import Flask, request, abort
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
app = Flask(__name__)
limiter = Limiter(app, key_func=get_remote_address, default_limits=["1000 per day", "50 per hour"])
@app.route("/play", methods=["POST"])
@limiter.limit("10 per minute")
def play_game():
# 游戏逻辑
# 防止频繁请求和恶意行为
@app.errorhandler(429)
def rate_limit_exceeded(e):
return "Rate limit exceeded", 429
if __name__ == "__main__":
app.run()
8. 示例配置文件介绍
8.1 查找nginx进程的命令
下面是一个示例的查找nginx进程的命令代码:
import subprocess
output = subprocess.check_output("ps aux | grep nginx", shell=True)
print(output.decode("utf-8"))
8.2 安装nginx和redis
下面是一个示例的安装nginx和redis的命令代码:
import subprocess
subprocess.call("sudo apt update", shell=True)
subprocess.call("sudo apt install nginx", shell=True)
subprocess.call("sudo apt -y install redis-server redis-tools", shell=True)
8.3 创建目录和编辑nginx配置文件
下面是一个示例的创建目录和编辑nginx配置文件的命令代码:
import subprocess
subprocess.call("sudo mkdir /data/source/mj_client_new", shell=True)
subprocess.call("sudo nano /etc/nginx/conf.d/mj_client.conf", shell=True)
8.4 启动nginx和redis服务
下面是一个示例的启动nginx和redis服务的命令代码:
import subprocess
subprocess.call("sudo service nginx start", shell=True)
subprocess.call("sudo service redis-server start", shell=True)
8.5 编辑redis的配置文件
下面是一个示例的编辑redis的配置文件的命令代码:
import subprocess
subprocess.call("sudo nano /etc/redis/redis.conf", shell=True)
8.6 nginx的配置内容
以下是一个示例nginx的配置内容:
server {
listen 8083 default_server;
listen [::]:8083 default_server;
server_name _;
root /usr/share/nginx/html;
location / {
root /data/source/mj_client_new;
index index.php index.html index.htm;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
8.7 数据库和redis的连接信息配置
以下是一个示例的数据库和redis的连接信息配置:
{
"db": {
"mysql": {
"use_env": "testB",
"testB": {
"host":"localhost",
"port": 3306,
"user":"root",
"passwd":"passwd",
"db":"twoperson_majdb"
}
},
"redis": {
"use_env": "testB",
"testB": {
"host": "127.0.0.1",
"port": 6379,
"db": 1,
"password": "passwd"
}
}
}
}
8.8 设置项的配置
以下是一个示例的设置项的配置:
DEBUG=1
REDIS_HOST="127.0.0.1"
REDIS_PORT=6379
REDIS_DB=10
REDIS_PWD="passwd"
SQLALCHEMY_DATABASE_URI = "mysql://root:passwd@127.0.0.1:3306/twoperson_majdb"
REDIS_URL = "redis://:passwd@127.0.0.1:6379/1"
8.9 启动命令的说明
以下是一个示例的启动命令的说明:
# 启动master节点
python start_mastersingle.py
# 启动proxy节点
python start_proxy_1.py
# 启动gate节点
python start_gate_1.py
# 启动游戏节点
python start_room_1.py
9. 总结
9.1 回顾学习内容
本文介绍了Python-Web游戏开发的基础知识和相关技术。涵盖了Python语言基础、Web开发基础、常用库和框架的使用、创建Web游戏项目、实现Web游戏功能、部署和发布、调试和测试、以及一些进阶主题。
当您打开一个文件进行编辑时,Nano编辑器的界面会分为几个部分,包括菜单栏、编辑区域和底部状态栏。以下是Nano编辑器的详细使用说明:
-
打开终端(命令行界面)。
-
输入以下命令以使用Nano打开一个文件:
nano 文件路径
其中,
文件路径
是您要编辑的文件的路径和名称。 -
Nano编辑器界面将显示在终端窗口中。界面包含:
-
菜单栏(在顶部):显示了一些常用命令和快捷键的信息。
-
编辑区域:显示文件的内容。您可以使用光标键(上、下、左、右箭头)移动光标。
-
底部状态栏:显示了一些当前状态的信息,如文件名、行号和光标位置。
-
-
您可以使用以下快捷键来编辑文件:
-
Ctrl + G:显示帮助菜单,其中包含所有快捷键的详细说明。
-
Ctrl + O:保存文件。按下快捷键后,您可以在底部状态栏中输入要保存的文件名(如果不同于打开的文件名),然后按回车键。
-
Ctrl + X:退出Nano编辑器。如果文件有未保存的更改,Nano会提示您是否保存。
-
Ctrl + K:剪切当前光标所在行,可以使用Ctrl + U粘贴。
-
Ctrl + J:向下滚动一行。
-
Ctrl + Y:向上滚动一行。
-
**Ctrl + **:查找并替换文本。按下快捷键后,您可以输入要查找的文本,然后按回车键。然后,您可以选择替换该文本或继续查找下一个。
-
Ctrl + W:查找文本。按下快捷键后,您可以输入要查找的文本,然后按回车键。
-
Ctrl + C:显示当前光标所在位置的行号。
-
Ctrl + D:删除当前光标所在位置的字符。
-
Ctrl + V:粘贴剪贴板中的内容。
-
Ctrl + Space:在当前位置设置/取消标记。可用于选择一段文本。
-
这些是Nano编辑器的一些基本操作。根据您的需求,您还可以使用其他功能和命令来编辑和操作文件。
9.2 推荐学习资源
推荐以下学习资源来深入了解Python-Web游戏开发:
- Python官方文档:https://docs.python.org
- Flask官方文档:https://flask.palletsprojects.***
- Django官方文档:https://docs.djangoproject.***
- Redis官方文档:https://redis.io/documentation
- MySQL官方文档:https://dev.mysql.***/doc
- TensorFlow官方文档:https://www.tensorflow.org
- PyTorch官方文档:https://pytorch.org/docs
9.3 展望Python-Web游戏开发的未来
Python-Web游戏开发在游戏领域中扮演着越来越重要的角色。随着人工智能、云计算和物联网等技术的不断发展,Python-Web游戏开发将进一步提升游戏体验和创新性。以后可以期待更多关于Python-Web游戏开发的新技术和工具的出现,从而推动游戏行业的发展。
ps aux | grep nginx
sudo apt update
sudo apt install nginx
sudo apt -y install redis-server redis-tools
sudo mkdir /data/source/mj_client_new
sudo nano /etc/nginx/conf.d/mj_client.conf
sudo nginx -t
sudo service nginx start
sudo service redis-server start
redis-cli
sudo nano /etc/redis/redis.conf
requirepass
127.0.0.1:6379> AUTH pwd
OK
127.0.0.1:6379> exit
friklogff@DESKTOP-Q7D21KL:~$ redis-server --version
Redis server v=6.0.16 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=a3fdef44459b3ad6