ma 发布的文章

特点
情景模式
可以使用 HTTP/Socks 代理访问网站;可以根据多种条件和规则自动切换;可以根据在线或本地的 PAC 脚本规则使用代理。

规则
可以在线导入 AutoProxy 和 Switchy 格式的规则,也可以自己添加域名通配符、网址通配符和网址正则等切换规则。

快速切换
可以在浏览器菜单中对情景模式进行快速切换,可以快速对当前网址添加过滤规则。

配置
目前 SwitchyOmega 支持 Chrome 和 Firefox 浏览器。SwitchyOmega 不提供代理服务,不会自动解封网站,也不会自动保护您的隐私,你需要有代理服务器才可以使用。

代理服务器
代理服务器可以支持 HTTP、HTTPS、SOCKS4、SOCKS5 代理协议。SOCKS 代理协议不支持验证。下面以配置 Shadowsocks 的 SOCKS5 代理协议为例。

情景模式只需要设置好代理协议和端口就可以,如果是使用需要验证的 HTTP 代理协议请设置验证信息。

自动切换模式
自动切换模式比较类似下面的“PAC情景模式”,但自动切换模式配置更多,可以自己设置切换规则规则,也可以根据 GFWListGFWList 生成规则。

切换规则最后一行的“默认情景模式”代表不在规则列表中网址我们使用“直接连接”情景模式,也就是说不走代理。

redis客户端连接成功,但是操作报异常——(error) NOAUTH Authentication required
错误的含义是说你没有认证,说明没有使用密码连接

查看密码:
进入redis的安装目录(是安装目录的),查看redis.config文件

vi redis.config
打开配置文件后,输入/#requirepass foobared(快速定位的命令)

使用密码连接
./redis-cli -h 127.0.0.1 -p 6379 -a Passw0rd
或者
先./redis-cli
输入auth +空格+ 刚才设置的密码
再操作就没问题了

一、问题现象与背景
在启动 Redis 时,系统可能会输出如下警告信息:

WARNING overcommit_memory is set to 0! Overcommit memory must be enabled!

这一警告提示当前系统的内存分配策略可能不符合 Redis 的预期要求。Redis 是一个以内存操作为核心的高性能键值数据库,其性能和稳定性高度依赖于内存的分配与管理。

二、原理剖析:什么是 overcommit_memory?
overcommit_memory 是 Linux 内核的一个内存分配策略参数,用于控制进程在申请内存时是否允许“过度承诺”(即申请的内存超过当前可用物理内存)。

0: 内核尝试避免内存过量分配,仅在有足够内存时才允许分配。
1: 总是允许内存过量分配,适合性能敏感型应用。
2: 限制内存分配总量不超过交换空间(swap)加上物理内存的某个比例。

Redis 在 fork 子进程进行持久化(如 RDB 快照)时,会使用写时复制(Copy-on-Write)机制,此时需要临时额外的内存。若 overcommit_memory=0,可能导致 fork 失败,进而影响 Redis 的正常运行。

三、影响分析:是否会影响性能与稳定性?
参数值 Redis 行为 性能影响 稳定性影响
0 fork 可能失败 高负载下性能下降 持久化失败,数据丢失风险
1 允许 fork 无明显影响 更稳定
2 受限制 取决于 swap 配置 可能失败
四、解决方法与配置建议
以下是常见的解决方法与配置建议:

1.修改内核参数: 推荐将 overcommit_memory 设置为 1。
2.临时修改: 使用 sysctl 命令立即生效:
3.sysctl vm.overcommit_memory=1
4.永久修改: 编辑 /etc/sysctl.conf 文件,添加:
5.vm.overcommit_memory = 1
6.应用配置: 重启 Redis 或执行 sysctl -p 使配置生效。

五、不同操作系统环境下的配置差异
虽然 Linux 是 Redis 的主流运行环境,但在不同发行版中配置方式略有差异:

Ubuntu/Debian: 配置文件位于 /etc/sysctl.conf 或 /etc/sysctl.d/ 目录。
CentOS/RHEL: 同样使用 /etc/sysctl.conf,也可通过 sysctl.d 管理。
容器环境(如 Docker): 需要在宿主机上设置,或使用 --sysctl 参数传递。
Kubernetes: 需通过 PodSecurityPolicy 或 initContainer 设置内核参数。

六、不处理的风险与后果
若不处理该警告,可能会导致以下问题:

fork 失败: 导致 RDB 持久化失败,无法保存当前数据状态。
主从复制中断: 在复制过程中 fork 子进程失败,影响高可用。
OOM(内存溢出): 若内存不足,系统 OOM Killer 可能强制杀死 Redis 进程。
服务不可用: 在高负载或大数据集场景下,Redis 可能因内存分配失败而崩溃。

七、流程图:配置建议流程

        graph TD
            A[启动 Redis 报警] --> B{是否设置 overcommit_memory=1?}
            B -->|是| C[正常运行]
            B -->|否| D[检查当前设置]
            D --> E{是否为 0?}
            E -->|是| F[修改为 1]
            E -->|否| G[检查是否为 2]
            G -->|是| F
            F --> H[临时设置或永久配置]
            H --> I[重启 Redis 或应用配置]
            I --> C


一、Redis入门概述
1、是什么?
(1)全称:REmote DIctionary Server(远程字典服务器)。是完全开源免费的,用C语言编写的, 遵守BCD协议。是一个高性能的(key/value)分布式内存数据库,

基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。

(2)Redis 与其他 key - value 缓存产品有以下三个特点
i)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
ii)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
iii)Redis支持数据的备份,即master-slave模式的数据备份

2、能干嘛?
(1)内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
(2)取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
(3)模拟类似于HttpSession这种需要设定过期时间的功能
(4)发布、订阅消息系统
(5)定时器、计数器 

3、去哪下?
(1)Http://redis.io/
(2)Http://www.redis.cn/

4、怎么玩?
(1)数据类型、基本操作和配置
(2)持久化和复制,RDB/AOF
(3)事务的控制
(4)复制
(5)。。。。

二、安装
Redis在windows下安装过程
下载地址
1、Github下载地址:https://github.com/MicrosoftArchive/redis/releases
(可以看到,尽管是最新版本,但最后一次提交已经是2016年了)
安装过程
据计算机系统选择32位或者64位。这里下载的是Redis-x64-3.2.100版本
1.首先先把下载的压缩包解压到一个文件夹中
解压后在E盘符创建新文件夹Redis-2.4,将解压文件拷贝进来,共7个文件,最常用的为:redis.conf、redis-server.exe、redis-cli.exe。
2.打开cmd指令窗口
3.输入你刚才解压的文件路径
4.然后输入启动命令 redis-server redis.windows.conf
点击开启客户端redis-cli.exe,默认端口为6379。
set t1 test
get t1
5.将Redis所在目录添加至环境变量,PATH--(E:\Redis-2.4) , 以便在命令提示符中每次需要切换判断和输入全路径。

设置Redis服务
1、由于上面虽然启动了redis,但是只要一关闭cmd窗口,redis就会消失。所以要把redis设置成windows下的服务。
2、接下来部署Redis为windows下的服务 首先关掉上一个窗口再打开一个新的cmd命令窗口
然后输入指令redis-server --service-install redis.windows.conf
redis-server --service-install redis.windows-service.conf --loglevel verbose
输入命令之后没有报错,表示成功了,刷新服务,会看到多了一个redis服务。
随后,进入右击此电脑–管理–服务和应用程序–服务 启动服务

参数介绍:
service-install:启动Redis服务安装,必须是第一个参数。
redis.windows.conf:指定配置文件。
loglevel verbose:日志级别。

Redis常用的指令
卸载服务:redis-server --service-uninstall
开启服务:redis-server --service-start
停止服务:redis-server --service-stop
测试redis,通过cd到我们解压的目录,输入指令通过Set get指令查看是否成功
安装测试成功。
这里只是做简单的安装,部署服务使用,更深入的使用可以去redis中文网看看 https://www.redis.net.cn/

下载RedisStudio。
下载地址:https://github.com/cinience/RedisStudio/releases
运行RedisStudio,连接本地Redis
可以看到,我们添加的数据被写进了第0个数据库(Redis默认会创建16个数据库,数据库编号以0开头)。

Linux下安装配置redis

1.下载gcc编译器
yum install -y gcc tcl

2.安装包下载
wget http://download.redis.io/releases/redis-8.0.3.tar.gz

3.解压安装包
tar -zxvf redis-8.0.3.tar.gz
4.进入已解压的目录
cd /usr/local/redis/redis-8.0.3

编译安装前,先做如下步骤,不然后续执行报错后需要删除文件夹重新开始;
cd /data/redis/redis-8.0.3/deps/fast_float
make
cd /data/redis/redis-8.0.3/deps/jemalloc
./configure
make
5.执行编译(有点慢,耐心等待)
make
6.安装 (注意目录)
make install PREFIX=/usr/local/redis8.0
这里多了一个关键字 PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径,会在根目录外层生成一个bin目录。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。

编译完成,切换到/usr/local/redis8.0/bin目录,就会看到编译好的redis二进制文件了,里面包含几个命令

redis-benchmark 性能测试工具
redis-check-aof 修复有问题的AOF文件
redis-check-dump 修复有问题的dump.rdb文件
redis-cli 客户端,操作入口
redis-sentinel redis集群使用
redis-server redis服务器启动命今

7.移动配置文件到安装目录下
mkdir /usr/local/redis/etc
mv redis.conf /usr/local/redis/etc

8.配置redis

vi /usr/local/redis/etc/redis.conf
bind 0.0.0.0  //代表所有服务器都可以链接
protected-mode no //保护模式(设为no允许远程连接)
port 6379
daemonize yes  //后台启动
requirepass  yourpassword  //密码
maxmemory 1gb
maxmemory-policy allkeys-lru
#logfile "6379.log"
dir /usr/local/redis/data  //数据存储目录
dbfilename "dump.rdb"
save 300 2
appendonly yes   //持久化配置 最好配置不然重启会丢数据
appendfilename "appendonly.aof"
appendfsync everysec


注意,如果提示错误: cc: error: …/deps/fast_float/libfast_float.a: No such file or directory
按下列步骤执行
cd /data/redis/redis-stable/deps/fast_float
make

注意,如果提示错误: cc: error: …/deps/jemalloc/lib/libjemalloc.a: No such file or directory
按下列步骤执行
cd /data/redis/redis-stable/deps/jemalloc
./configure
make

出现上面错误时,需要删除/data/redis/redis-stable 目录,重新解压下载的redis-stable.tar.gz文件 , 执行完上面处理脚本后 再去 /data/redis/redis-stable 目录 make ,不然会出现 类似 undefined reference to `je_malloc_usable_size’ 这样的错误!

9、将redis加入到开机启动(自行修改)

vi /etc/rc.local //在里面添加内容:/usr/local/redis8.0/bin/redis-server /usr/local/redis/etc/redis.conf (意思就是开机调用这段开启redis的命令)

10、开启redis

/usr/local/redis8.0/bin/redis-server /usr/local/redis/etc/redis.conf

Windows环境安装Redis
Another Redis Desktop Manager —— 一款支持 Windows、Mac、Linux 的 Redis 桌面(GUI)管理客户端工具,主打更快、更好、更稳定,性能出众,轻松加载海量键值!
功能特色:

支持 Redis Key 多数据库增删改查操作、模糊查询、精确查询、JSON 数据格式化等
提供命令行操作窗口及命令提示
记录慢查询日志
系统支持深色模式,个性化标记连接颜色,以及多种字体选择
国际化,支持设置中文、英语等多种语言

GitHub上的大神编写了Redis的图形化桌面客户端,地址:https://github.com/uglide/RedisDesktopManager
不过该仓库提供的是RedisDesktopManager的源码,并未提供windows安装包,如果你要使用它,你得自己去编译。

如果你不想编译,就可以订阅它的付费服务,它可以自动更新、下载、打包。
但是有一个人觉得这样太麻烦了,它也不不需要你掏钱,它会全自动帮你更新

在下面这个仓库可以找到安装包:https://github.com/lework/RedisDesktopManager-Windows/releases,这个地方可以找到免费版本,可以自行下载
下载地址:https://github.com/qishibo/AnotherRedisDesktopManager/releases

2、解压/执行安装
新建连接
统计信息
Key 操作
命令行操作
内存分析
慢查询
基础设置

因为:Excel的实际编码行为,依赖于系统的语言版本、用户设置以及文件的保存选项。

知识1:不同的操作系统,拥有不同的默认编码值(ANSI Code Page)
Windows注册表中的ACP的值(ANSI Code Page)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage。

知识2:Windows系统是如何区分ANSI背后的真实编码的呢?
微软用一个叫“Windows code pages”(在cmd命令行下执行chcp命令可以查看当前code page的值)的值来判断系统默认编码,比如:

简体中文的code page值为936(表示GB2312),繁体中文的code page值为950(表示Big-5编码)。

chcp 是 "change code page" 的缩写,用于显示或设置控制台窗口使用的字符编码的命令。

知识3:我们能否通过修改Windows code pages的值来改变“ANSI编码”呢?
临时修改:

命令提示符下,我们可以通过chcp命令来修改当前终端的active code page,例如:

(1) 执行:chcp 1252,code page 改为 1252,
Windows-1252是一种扩展的ASCII字符集,主要适用于西欧语言,包括英语。它是IBM PC兼容机上DOS和Windows操作系统中ANSI代码页的常见实现,用于替代ISO 8859-1(Latin-1)字符集。(汉字就成乱码了);

(2) 执行:chcp 936,code page 改为 936。

上面的操作只在当前终端起作用,并不会影响系统默认的“ANSI编码”。当我们进入cmd窗口后,直接输入“chcp 1252”回车后,只会临时修改当前窗口的活动代码页,当再次进入后又会显示之前的页码页。