微服务mysql,redis,elasticsearch, kibana,cassandra,mongodb, kafka

在 Windows 上安装 MySQL

  1. 下载 MySQL 安装包
  • 访问 MySQL 官方网站。

  • 选择适合 Windows 的安装程序,下载并保存。

运行安装程序

  • 双击下载的安装文件,开始安装。

  • 在安装向导中选择"开发者默认"或"完整安装"。

配置 MySQL

  • 在配置过程中,选择配置类型(如开发机、服务器等)。

  • 设置 MySQL 的根用户密码,并选择是否创建其他用户。

设置服务

  • 选择 MySQL 是否作为 Windows 服务运行(一般选择"自动")。

完成安装

  • 安装完成后,可以选择运行 MySQL 服务器并打开 MySQL Shell。

验证安装

  • 打开命令提示符,输入 mysql -u root -p 并输入密码,检查是否能成功登录。

把新建的mysql变量添加到Path路径变量中

在mysql目录下创建一个ini或cnf配置文件

go 复制代码
[mysqld]
character-set-server=utf8mb4
bind-address=0.0.0.0
port=3306
default-storage-engine=INNODB
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
go 复制代码
[mysqld]
; 设置3306端口
port=3306
; 设置mysql的安装目录
basedir=C:\\gl\\SQL\\mysql-8.0.18-winx64
; 设置mysql数据库的数据的存放目录
datadir=C:\\gl\\SQL\\mysql-data
; 允许最大连接数
max_connections=200
; 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
; 服务端使用的字符集默认为UTF8
character-set-server=utf8
; 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
; 默认使用"mysql_native_password"插件认证
default_authentication_plugin=mysql_native_password
[mysql]
; 设置mysql客户端默认字符集
default-character-set=utf8
[client]
; 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

redis一键安装

https://github.com/MicrosoftArchive/redis/releases

mongodb

https://www.mongodb.com/try/download/community

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。

  2. 64 bit JDK 1.8+;

  3. Maven 3.2.x+;

Nacos的运行需要以至少2C 4g 60g*3的机器配置下运行。

下载编译后压缩包方式

您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。

go 复制代码
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
  cd nacos/bin

Windows

启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

服务注册&发现和配置管理

服务注册

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

服务发现

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'

发布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"

获取配置

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

Windows

shutdown.cmd

或者双击shutdown.cmd运行文件。

Windows

  1. 下载并安装 JDK:
  • 从 Oracle 官网 或 AdoptOpenJDK 下载最新的 JDK(JDK 8 或更高版本)。

  • 安装时记下安装路径(例如,C:\Program Files\Java\jdk-1.x.x)。

设置 JAVA_HOME 变量:

  • 变量名: JAVA_HOME

  • 变量值: JDK 的安装路径(例如,C:\Program Files\Java\jdk-1.x.x)。

  • 右键点击桌面或文件资源管理器中的 "此电脑" 或 "计算机"。

  • 点击 "属性"。

  • 点击 "高级系统设置"。

  • 点击 "环境变量"。

  • 在 "系统变量" 部分,点击 "新建",添加:

  • 点击 "确定"。

更新 PATH 变量:

  • 在 "系统变量" 部分找到 Path 变量,选中它后点击 "编辑"。

  • 点击 "新建",添加:%JAVA_HOME%\bin

  • 点击 "确定" 保存更改。

验证:

  • 打开命令提示符,运行:echo %JAVA_HOME%java -version 来验证安装。

Cassandra 安装

https://cassandra.apache.org/_/download.html

https://dlcdn.apache.org/cassandra/5.0.2/apache-cassandra-5.0.2-bin.tar.gz

配置环境变量,新建一个CASSANDRA_HOME变量

%CASSANDRA_HOME%\bin

输入:echo %java_home%和echo %cassandra_home%

在D:\InstallFile\cassandra-3.11.3目录中新建一个data目录

找到cassandra.yaml配置文件

对该文件编辑,然后找到data_file_directories

在D:\InstallFile\cassandra-3.11.3目录中新建一个commitlog目录

在cassandra.yaml配置文件中找到commitlog_directory

在D:\InstallFile\cassandra-3.11.3目录中新建一个saved_caches目录

在cassandra.yaml配置文件中找到saved_caches_directory

然后找到D:\InstallFile\cassandra-3.11.3\bin目录中的cassandra.bat文件

打开DOS窗口,并进入到D:\InstallFile\cassandra-3.11.3\bin目录中

通过用户登录,cassandra的默认用户名和密码为:cassandra

查询keyspaces,输入命令:describe keyspaces;

go 复制代码
CREATE KEYSPACE IF NOT EXISTS MyCasDB WITH REPLICATION = {'class': 'SimpleStrategy','replication_factor':1};命令创建一个数据库mycasdb

在mycasdb数据库中创建一个表,首先使用use mycasdb;表示要使用此数据库

向user表中插入输入,使用:

go 复制代码
INSERT INTO user (id,user_name) VALUES (1,'xx');
INSERT INTO user (id,user_name) VALUES (2,'xxx');
INSERT INTO user (id,user_name) VALUES (3,'xxxx');
INSERT INTO user (id,user_name) VALUES (4,'xxxxx');

如果需要cqlsh.bat来进行连接,则需要安装python

go 复制代码
$ python shutdown_by_port.py
欢迎使用端口查找与进程关闭工具
请输入要查找的端口号 (退出请输入 0): 8080
找到占用端口 8080 的进程 ID: 12345
你确定要优雅地关闭进程 12345 吗?(y/n): y
进程 12345 已成功优雅关闭。

请输入要查找的端口号 (退出请输入 0): 0
程序结束。

cassandra数据库

去官网下载压缩包,版本最好不要用最新的,也不要用太老的版本

分别存放数据库的数据存储,日志存储和缓存

默认文件夹位置

  1. Commitlog 文件夹
  • 默认路径:<CASSANDRA_HOME>/commitlog/

  • 作用:Commitlog 用于记录所有写入操作,以保证数据的一致性和可靠性。在数据写入时,所有的操作会先写入 commitlog 中,确保即使发生系统崩溃,数据也不会丢失。Commitlog 存储的是有序的日志数据。

Data 文件夹

  • 默认路径:<CASSANDRA_HOME>/data/

  • 作用:Data 文件夹用于存储 Cassandra 中的 SSTable 文件,SSTable 是 Cassandra 存储数据的文件格式。每个表的数据会存储为一组 SSTable 文件,这些文件是持久化存储的核心内容。data 文件夹中的子文件夹按照每个 keyspace 和表进行组织。

Saved Caches 文件夹

  • 默认路径:<CASSANDRA_HOME>/saved_caches/

  • 作用:Saved caches 文件夹用于存储一些缓存数据,主要包括一些压缩文件、Bloom filter 缓存、索引缓存等。保存这些缓存文件可以加速查询性能,减少数据库查询时的磁盘 I/O 操作。

配置文件中定义位置

这些默认文件夹的位置可以在 cassandra.yaml 文件中进行自定义设置。以下是对应的配置项:

  • Commitlog 目录

    go 复制代码
    commitlog_directory: /var/lib/cassandra/commitlog

    你可以通过修改该配置项来设置 commitlog 文件夹的位置。

  • Data 目录

    go 复制代码
    data_file_directories:
      - /var/lib/cassandra/data

    你可以设置数据存储的位置,默认是 /var/lib/cassandra/data,该位置也可以指定为多个目录。

  • Saved Caches 目录

    go 复制代码
    saved_caches_directory: /var/lib/cassandra/saved_caches

    修改此配置项可以更改 saved caches 文件夹的路径。

假设你的 Cassandra 安装目录是 /opt/cassandra,则默认情况下:

  • Commitlog 文件夹 会位于 /opt/cassandra/commitlog/

  • Data 文件夹 会位于 /opt/cassandra/data/

  • Saved caches 文件夹 会位于 /opt/cassandra/saved_caches/

错误信息指示了 Cassandra 在启动过程中发生了一个致命错误(EXCEPTION_ACCESS_VIOLATION),具体是在使用 sigar-amd64-winnt.dll 库时崩溃了。这通常是由于与系统的本地代码库(如 SIGAR 库)或环境配置相关的问题。以下是几种可能的解决方法:

1. 修复 SIGAR 库问题

Cassandra 使用 SIGAR 库来进行系统监控和信息收集(如 CPU、内存、线程等)。EXCEPTION_ACCESS_VIOLATION 错误通常与该库的使用或兼容性有关。

解决方法:

  • 尝试更新或替换 Cassandra 中的 SIGAR 库文件。你可以尝试重新下载 Cassandra,确保文件没有损坏,或直接替换掉 sigar-amd64-winnt.dll 文件。

  • 确保你使用的 SIGAR 库与你的操作系统版本兼容。如果你正在使用 64 位的 Windows,确保 sigar-amd64-winnt.dll 文件是适用于你的系统的。

2. 禁用 SIGAR 库

如果你不需要 Cassandra 的系统监控功能,可以尝试禁用 SIGAR 库。你可以通过修改 cassandra-env.shcassandra-env.bat 文件来禁用 SIGAR。

解决方法:

  • 打开 apache-cassandra-3.11.4\conf\cassandra-env.sh(Linux/Mac)或 apache-cassandra-3.11.4\conf\cassandra-env.bat(Windows)。

  • 注释掉或删除与 SIGAR 相关的配置,特别是以下行:

    go 复制代码
    -Djava.library.path=<path-to-sigar-bin>
  • 然后重新启动 Cassandra。

内存配置

另一个警告提示你的 JVM 没有配置在发生 OutOfMemoryError 时自动停止,这可能会导致数据损坏。虽然这个问题与 SIGAR 无关,但它是一个需要关注的警告。

解决方法:

  • cassandra-env.shcassandra-env.bat 中,增加以下 JVM 参数:

    go 复制代码
    -XX:+ExitOnOutOfMemoryError

    这样,当发生内存溢出错误时,JVM 将自动停止。

检查 JMX 配置

另一个警告是 JMX(Java Management Extensions)未启用远程连接。这通常不会导致启动失败,但如果你打算远程管理 Cassandra,建议启用 JMX。

解决方法:

  • cassandra-env.shcassandra-env.bat 文件中,查找并启用 JMX 配置,类似于:

    go 复制代码
    -Dcassandra.jmx.remote.port=7199
    -Dcassandra.jmx.remote.authenticate=false
    -Dcassandra.jmx.remote.ssl=false

查看 Java 错误报告

错误信息中提到生成了一个错误报告文件(hs_err_pid24616.log),这个文件包含了更详细的崩溃日志。你可以打开该文件来获取更多线索,特别是查看崩溃发生的堆栈信息。

go 复制代码
#集群名称

cluster_name: 'cassandra_Cluster_name'   

 

hints_directory: /data1/cassandra/hints

#数据目录

data_file_directories:

- /data /cassandra/data

commitlog_directory: /data /cassandra/commitlog

cdc_raw_directory: /data /cassandra/cdc_raw

saved_caches_directory: /data /cassandra/saved_caches

seed_provider:

    - class_name: org.apache.cassandra.locator.SimpleSeedProvider

      parameters:

          - seeds: "ip1,ip2,ip3"

#监听地址

listen_address: ip
go 复制代码
data_file_directories:
  - D:/cassandra/data
commitlog_directory: D:/cassandra/commitlog
cdc_raw_directory: D:/cassandra/cdc_raw
saved_caches_directory: D:/cassandra/saved_caches

listen_address 是 Cassandra 用来与其他节点通信的网络接口地址。在本地环境中,可以设置为 127.0.0.1 或者你机器的局域网 IP 地址。

补充设置:RPC 地址

除了 listen_address,还可以设置 rpc_address,它决定了客户端(如应用程序)如何连接到 Cassandra:

go 复制代码
rpc_address: 0.0.0.0

这将允许 Cassandra 接受来自任何 IP 地址的客户端请求。在生产环境中,可能需要设置成特定的 IP 地址。

确保:

  • 你的 Java 环境正确设置,并且 Java 版本符合 Cassandra 的要求。

  • 本地端口(如 9042)未被其他程序占用。

  • 数据目录、日志目录等路径正确且有权限读写。

https://cassandra.apache.org/_/download.htmlhttps://www.apache.org/dyn/closer.lua/cassandra/3.11.11/apache-cassandra-3.11.11-bin.tar.gz

D:\apache-cassandra-3.11.11-bin\apache-cassandra-3.11.11\bin

修改cassandra.[yaml]配置
go 复制代码
data_file_directories:
- D:\apache-cassandra-3.11.11-bin\apache-cassandra-3.11.11\data
commitlog_directory: D:\apache-cassandra-3.11.11-bin\apache-cassandra-3.11.11\commitlog

saved_caches_directory: D:\apache-cassandra-3.11.11-bin\apache-cassandra-3.11.11\saved_caches

http://www.apache.org/dyn/closer.lua/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz

配置 Cassandra

在 Cassandra 4.0+ 中,配置文件主要位于 conf 目录下。以下是常见的配置文件:

  • cassandra.yaml:Cassandra 的主要配置文件,包含集群配置、存储路径等。

  • cassandra-env.sh :环境变量配置文件(在 Windows 上没有该文件,而是 cassandra-env.ps1)。

  • logback.xml:Cassandra 的日志配置文件。

Cassandra 默认使用以下端口:

  • 7000:用于节点间的通信。

  • 7199:JMX 监控端口。

  • 9042:CQL (Cassandra Query Language) 端口,用于访问 Cassandra 数据库。

  • 9160:Thrift 端口(虽然 Cassandra 4.x 不再默认使用 Thrift)。

[JMX is not enabled to receive remote connection]

elasticsearch 安装 - kibana

进入ElasticSearch 官网,根据操作系统点击下载ElasticSearch(如果操作系统非主流,请查阅ElasticSearch的操作系统支持矩阵)

查看节点信息。单节点默认监听9200端口,所以直接在浏览器中输入'''localhost:9200'''即可查看节点信息 开发者可以自定义设置集群名字(默认elasticsearch)和节点名字

自定义设置节点和集群名字。进入config文件夹,打开 elasticsearch.yml文件

在bin目录下,进入cmd,直接执行./elasticsearch

go 复制代码
# 集群名字
culster.name: javaboy-es
# 节点名字
node.name: master

Kibana安装

Kibana 是一个 Elastic 公司推出的一个针对 Elasticsearch 的分析以及数据可视化平台,可以搜索、查看存放在 Elasticsearch 中的数据。 安装步骤如下:

  • 解压文件

  • 配置 es 的地址信息(如果 Elasticsearch 是默认设置,则可以不用配置,其配置文件在 kibanaconfig/kibana.yml

  • kibanabin 目录下 执行命令 ./kibana 文件启动

go 复制代码
在ElasticSearch中有三个配置文件,分别为(默认位置 config目录下)elasticsearch.yml、jvm.options和log4j2.properties。
  • elasticsearch.yml:配置ElasticSearch

  • jvm.options:配置ElasticSearch依赖的JVM信息

  • log4j2.properties:配置ElasticSearch日志记录中的各个属性

配置文件格式信息

go 复制代码
ElasticSearch的配置文件为yaml。
go 复制代码
path:
  	data:/var/lib/es
  	logs:/var/log/es
  • 单条方式

    go 复制代码
    path.data:/var/lib/es
    	path.logs:/var/log/es
  • 引用环境变量方式

    go 复制代码
    node.name:${HOSTNAME}
    network.host:${ES_NETWORK_HOST}

一般情况下,Elasticsearch中很少修改JVM选项,最有可能更改配置堆的大小; 默认情况下,ElasticSearch配置JVM使用最小堆空间和最大堆空间大小均为1G

在ElasticSearch中,我们通过配置jvm.options文件中的xms(最小堆大小)和xmx(最大堆大小)两个参数来指定整个堆大小,一般情况下,两 者参数设置应为相等。

jvm.options配置文件说明

  • 以 " # "开头的行被视为注释并忽略

  • 以"**-"开头的行被视为独立于本机 JVM版本号的JVM**选项

    go 复制代码
    -Xmx2g
  • 以"数字: "开头的行被视为一个JVM 选项,该选项仅在本机JVM的版本号相互匹配时适用

    go 复制代码
    8:-Xmx2g
  • 以"数字-"开头的行被视为一个JVM选项,该选项仅在本机JVM的版本号大于或等于该数字版本号时才适用

    go 复制代码
    8-:-Xmx2g
  • 以"数字-数字 "开头的行被视为一个JVM 选项,该选项仅在本机JVM版本号在这两个数字版本号范围内时适用

    go 复制代码
    8-9:-Xmx2g
  • 空白行忽略即可,其他都被拒绝解析

ElasticSearch中相关的三个公开属性信息:

  • $sys:es.logs.base_path:日志文件目录地址

  • $sys:es.logs.cluster_name:集群名称(默认配置中,用作日志文件名的前缀)

  • $sys:es.logs.node_name:节点名称(如果显式地设置了节点名称)

go 复制代码
# 配置RollingFile的appender属性
appender.rolling.type = RollingFile 
appender.rolling.name = rolling 
# 日志信息将输出到 ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json中
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json
# 使用json文件格式输出
appender.rolling.layout.type = ESJsonLayout
# type_name是填充ESJsonLayout的类型字段的标志,该字段可以让我们在解析不同类型的日志时更加简单
appender.rolling.layout.type_name = server
# 日志将会滚动输出到${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-
%i.json.gz中,日志文件会被压缩,且呈i递增状态
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-
%d{yyyy-MM-dd}-%i.json.gz  
appender.rolling.policies.type = Policies
# 使用基于时间戳的新增日志滚动策略    
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
# 按天滚动新增日志    
appender.rolling.policies.time.interval = 1
# 在日期时间上对齐标准,而不是按每24小时来新增一次滚动日志文件    
appender.rolling.policies.time.modulate = true
# 按日志文件大小的策略来滚动新增日志文件    
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
# 每生成128MB的日志文件,就滚动新增一次日志    
appender.rolling.policies.size.size = 128MB 
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
# 每次新增滚动日志时执行删除日志文件动作   
appender.rolling.strategy.action.type = Delete
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
# 仅当文件匹配时才删除日志文件
appender.rolling.strategy.action.condition.type = IfFileName
# 该配置仅用于删除日志文件    
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
# 只有当日志目录下积累了较多日志时才删除    
appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize
# 压缩日志的条件是日志文件大小达到2G    
appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB
go 复制代码
elasticsearch-service.bat后面还可以执行这些命令
install: 安装Elasticsearch服务
remove: 删除已安装的Elasticsearch服务(如果启动则停止服务)
start: 启动Elasticsearch服务(如果已安装)
stop: 停止服务(如果启动)
manager:启动GUI来管理已安装的服务

ElasticSearch安装为Windows服务

1.elasticsearch的bin目录下有一个elasticsearch-service.bat

2.cmd 进入bin目录下执行: elasticsearch-service.bat install

为了修改 elastic 用户的密码,你可以使用 Elasticsearch 自带的 elasticsearch-setup-passwords 工具,执行以下命令来修改密码:

go 复制代码
./bin/elasticsearch-setup-passwords interactive

如果你不需要 HTTPS,可以在配置中禁用:

go 复制代码
xpack.security.http.ssl.enabled: false

要将 Elasticsearch 配置从 HTTPS 访问切换为 HTTP 访问,请按以下步骤修改配置文件 elasticsearch.yml

1. 修改 elasticsearch.yml 配置文件

找到以下 HTTPS 配置并禁用或删除这些设置。

配置文件调整

elasticsearch.yml 中,将以下 HTTPS 配置禁用:

go 复制代码
# Enable security features
xpack.security.enabled: false

# Disable HTTPS for HTTP API client connections
xpack.security.http.ssl.enabled: false

# Disable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl.enabled: false
详细说明:
  • **xpack.security.enabled: false**:禁用安全功能,不再要求身份验证(如用户名和密码)。

  • **xpack.security.http.ssl.enabled: false**:禁用 HTTP API 的 SSL(HTTPS),使 Elasticsearch 通过 HTTP 访问。

  • **xpack.security.transport.ssl.enabled: false**:禁用节点间通信的加密,所有节点将通过非加密的 HTTP 进行通信。

Kibana安装

Kibana 是一个 Elastic 公司推出的一个针对 Elasticsearch 的分析以及数据可视化平台,可以搜索、查看存放在 Elasticsearch 中的数据。 安装步骤如下:

  • 下载 Kibana: Kibana 网站

  • 解压文件

  • 配置 es 的地址信息(如果 Elasticsearch 是默认设置,则可以不用配置,其配置文件在 kibanaconfig/kibana.yml

  • kibanabin 目录下 执行命令 ./kibana 文件启动

  • 浏览器 localhost:5601

等待加载完毕,

Kibana 是一个 web 应用,可以通过5601端口访问。只需要在浏览器中指定 Kibana 运行的机器,然后指定端口号即可。例如, localhost:5601 或者 http://127.0.0.1:5601

检查 Kibana 状态

您可以通过 localhost:5601/status 来访问 Kibana 的服务器状态页,状态页展示了服务器资源使用情况和已安装插件列表。

加群联系作者vx:xiaoda0423

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

相关推荐
墨鸦_Cormorant18 分钟前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
计算机毕设源码qq-383653104127 分钟前
(附项目源码)Java开发语言,215 springboot 大学生爱心互助代购网站,计算机毕设程序开发+文案(LW+PPT)
java·开发语言·spring boot·mysql·课程设计
袁庭新37 分钟前
Cannal实现MySQL主从同步环境搭建
java·数据库·mysql·计算机·java程序员·袁庭新
爱学习的白杨树1 小时前
MySQL中有哪几种锁?
数据库·mysql
码上有前3 小时前
解析后端框架学习:从单体应用到微服务架构的进阶之路
学习·微服务·架构
Dlwyz3 小时前
问题: redis-高并发场景下如何保证缓存数据与数据库的最终一致性
数据库·redis·缓存
梦幻通灵4 小时前
ES分词环境实战
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客4 小时前
Elasticsearch 中的热点以及如何使用 AutoOps 解决它们
大数据·运维·elasticsearch·搜索引擎·全文检索
Stara05114 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
飞升不如收破烂~4 小时前
redis的List底层数据结构 分别什么时候使用双向链表(Doubly Linked List)和压缩列表(ZipList)
redis