Windows 环境下载、安装、使用(.Net 5.0) Redis 数据库及常见问题的解决

windows,环境,下载,安装,使用,net,redis,数据库,常见问题,解决 · 浏览次数 : 472

小编点评

## Redis 下载安装指南 **1. 下载安装包** * 从 GitHub 地址中下载最新版本:`github地址` * 下载的压缩包包含包含多种平台的 Redis 安装包,选择下载 `redis-x64-3.0.504.zip`。 **2. 配置文件修改** * 解压缩 downloaded 的压缩包,找到 `redis.windows.conf` 文件。 * 在文件中修改以下配置项: * `redishost`:指定 Redis 服务运行的 IP 地址。 * `redisport`:指定 Redis 服务运行的端口号。 * `redispass`:指定 Redis 服务运行的密码。 * 其他配置项根据实际需求进行调整。 **3. 启动 Redis 服务** * 使用 `cmd` 或 `powershell` 命令行启动 Redis 服务。 * 例如:`cmd` 中:`redis-server -host 127.0.0.1 -port 6379` * 例如:`powershell` 中:`redis-server -host 127.0.0.1 -port 6379` **4. 验证 Redis 服务** * 启动服务后,在浏览器中访问 `127.0.0.1` 或 `localhost`,检查服务是否正常运行。 * 应该看到一个与服务运行状态相关的页面,显示服务是否运行成功。 **常见问题及解决** * 6000次/h 调用限制报错:版本过高,需要降版本至 v3.9.71 或以下。 * 无法连接:检查配置文件中的 `redishost`、`redisport` 和 `redispass` 配置项是否正确。 * 服务启动失败:检查服务日志是否有异常信息。 **其他资源** * ServiceStack.Redis 官方文档:`命名空间` * Redis 文档:`官方文档` * VS 中的 Redis 示例代码:`命名空间`

正文

〇、前言

Redis (Remote Dictionary Server 远程字典服务)是一个使用 ANSI C 编写的开源、包含多种数据结构,支持网络、基于内存、可选持久性的键值对存储数据库,是现在最受欢迎的NoSQL数据库之一。

ANSI C 是由美国国家标准协会(ANSI)及国际标准化组织(ISO)推出的关于C语言的标准。ANSI C 主要标准化了现存的实现,同时增加了一些来自 C++ 的内容(主要是函数原型),并支持多国字符集(包括备受争议的三字符序列)。ANSI C 标准同时规定了 C 运行期库例程的标准。

主要应用场景包括:缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统

一、Redis 的下载安装

1. 下载安装包

  github 地址 点击跳转

  本文是介绍 Windows 平台,可以选择直接下载 Redis-x64-3.0.504.zip。

  

2. 配置文件修改

下载的安装包解压后,在文件中找到配置文件:redis.windows.conf,进行编辑。

(若不修改配置文件直接启动服务,则数据库可在任意服务器通过当前服务器的 IP 和 端口 6379 进行访问,安全性较差)

  下边列出常用的几个配置:

# 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求
bind 127.0.0.1

# redis监听的端口号
port 6379

# 数据库的数量,默认使用的数据库是0。可以通过”SELECT 【数据库序号】“命令选择一个数据库,序号从0开始
databases 16

# requirepass 配置可以让用户使用 AUTH 命令来认证密码
# 使用 requirepass 的时候需要注意,因为 redis 太快了,每秒可以认证 15w 次密码
# 简单的密码很容易被攻破,所以最好使用一个更复杂的密码
requirepass passwordmyself_

  详细配置可参考:redis配置文件中常用配置详解

3. 启动 Redis 服务

  1/4 若不需要配置密码,就可以直接双击 redis-server.exe,启动 Redis 服务,然后用 RedisDesktopManager 客户端测试连接。如下图:

    (亦可通过 cmd 命令行启动,通过 cd 进入 Redis 文件夹,输入命令:redis-server.exe  回车即可)

  2/4 若修改了 redis.windows.conf 配置文件,就需要启动服务时加上配置文件名,不然配置项不起效。

    cmd 命令行输入 redis-server.exe redis.windows.conf  回车。  

  3/4 将 Redis 添加为系统服务,建议手动修改为自动启动。

    cmd 命令行输入 redis-server --service-install redis.windows.conf 回车。

    启动服务:redis-server --service-start

    停止服务:redis-server --service-stop

    删除服务:sc delete servicename

  4/4 验证服务

    切换到 redis 目录下:redis-cli.exe -h 127.0.0.1 -p 6379

    若能如图成功进入 Redis 数据库,就证明数据库可用。

    

二、.Net 5.0 环境下使用 Redis 数据库生成序列号

本文通过引用 ServiceStack.Redis.dll 来完成程序与数据库的交互。假设要应用到业务环境中,我们选择版本 v3.9.71。

1. 安装需要引用的动态库

相关的动态库共包括三个:ServiceStack.Redis.dll、ServiceStack.Common.dll、ServiceStack.Text.dll。版本都选择 v3.9.71。

  

2. 关于 Redis 的程序语言

首先我们可以采用方法 IncrementValue(string key) 生成序号,当 key 值不存在时,Redis 会自动创建,并返回 1,后续每调用一次就 +1。

long xuhao = redisClient0.IncrementValue("xuhaolie");

  

但是取到序号后,我们会做一系列操作,如果执行操作过程中出现异常,那么生成的序号也就被占用了。

  当并发量不大,同时也不想被占用,可以通过新增一个 key-value 的方式,每次操作前取出 value ,操作成功后再将序号 +1 存入。如下例子:

string redishost = configurationRoot["OrderingPara:redishost"];
string redisport = configurationRoot["OrderingPara:redisport"];
string redispass = configurationRoot["OrderingPara:redispass"];
string shunxuhao = string.Empty, hashId = string.Empty;
// 数字代表,实例 redisClient 对应的数据库,默认有 16 个,序号从 0~15
using (RedisClient redisClient = new RedisClient(redishost, redisport, redispass, 0))
{
    // GetValuesFromHash:根据 hashId 和 key 取 value
    var xuhaolist = redisClient.GetValuesFromHash(hashId, "shunxuhao");
    // public List<string> GetValuesFromHash(string hashId, params string[] keys);
    if (xuhaolist.Count == 1 && xuhaolist[0]==null)// 未查到 key 为“shunxuhao”的键值对
    {
        using (RedisClient redisClient1 = new RedisClient(redishost, Convert.ToInt32(redisport), redispass, 1))
        {
            redisClient1.FlushDb();// 根据业务需要,仅清空 db(1),其他数据库不影响
        }
        redisClient.SetEntryInHash(hashId, "shunxuhao", "1");// 新增 key 为“shunxuhao”,值为“1”的键值对
        xuhaolist = redisClient.GetValuesFromHash(hashId, "shunxuhao");// 新增数据后再查询确认
    }
    if (xuhaolist.Count == 1 && xuhaolist[0] != null)
    {
        shunxuh = xuhaolist[0];
    }
    else
        return new Info { code = 1, message = "失败" };
}
// 其他业务操作。。。省略
//顺序号 +1 后,再存入
shunxuh = (Convert.ToInt32(shunxuh)+1).ToString();
using (RedisClient redisClient = new RedisClient(redishost, redisport, redispass, 0))
{
    redisClient.SetEntryInHash(hashId, "shunxuhao", shunxuh);
}

  string 数据操作举例:

// 新增 key 为“shunxuhao”,值为“1”的键值对
redisClient.SetEntryInHash(hashId, "shunxuhao", "1");
// 获取一个 hash 队列的全部值
var oparajsonlist = redisClient.GetHashValues(hashId);
// 根据 hashId 和 key 取 value
var xuhaolist = redisClient.GetValuesFromHash(hashId, "shunxuhao");
// 删除指定的键值
redisClient.RemoveEntryFromHash(hashId, orderinfo.ID);
// 仅清空 db(0)(某一个数据库),其他数据库不影响
redisClient0.FlushDb();
// 清空全部 db, 慎用!
//redisClient0.FlushAll();

  更多数据类型的使用,详见命名空间:ServiceStack.Redis。(引用后可在 VS 中查看)

三、常见问题及解决

1. 6000次/h 调用限制

报错条件:当项目中引用的 ServiceStack.Redis.dll 版本在 v4 及以上,且业务操作比较复杂,就有可能出现如下报错内容:

  The free-quota limit on ‘6000 Redis requests per hour‘ has been reached. Please see https://servicestack.net to upgrade to a commercial license.

原因:因为 ServiceStack.Redis.dll 这个官方 Redis 访问组件从 4.0 版本后开始商业化了,添加了调用频率的限制。

解决:如本文第二部分介绍的,将版本降至 v3.9.71,并另外添加两个动态库的引用(ServiceStack.Common.dll、ServiceStack.Text.dll)即可。

当然不同版本的写法也有区别,如下:

// 新版写法 v4 及以后
var redisEndpoint = new RedisEndpoint { Host = "", Password = "", Port = Convert.ToInt32("3679"), Db = 0 };
using (RedisClient redisClient = new RedisClient(redisEndpoint))
{
    var strlist = redisClient.GetHashValues("hashId");//新老版本语法相同
}
// 旧版写法 v4 之前
using (RedisClient redisClient = new RedisClient("redishost", Convert.ToInt32("redisport"), "redispass", 0))
{
    var strlist = redisClient.GetHashValues("hashId");//新老版本语法相同
}

注:后续遇到其他问题再来,有问题欢迎大家指正或补充。

与Windows 环境下载、安装、使用(.Net 5.0) Redis 数据库及常见问题的解决相似的内容:

Windows 环境下载、安装、使用(.Net 5.0) Redis 数据库及常见问题的解决

本文简单介绍了 Redis 的下载、安装,以及基于 ServiceStack.Redis.dll 的使用,希望对你有帮助。

Gavvmal

Gavvmal springboot 官方文档说明了两种方式,一种使用插件,直接生成docker镜像,但是这需要本地安装docker环境,但是无论用windows还是mac,本地安装docker都感觉不好,太占用资源。 第二种方法,安装Gavvmal,下载相应版本的压缩包,可以把这个压缩版看做一个J

QGIS开发笔记(三):Windows安装版二次开发环境搭建(下):将QGis融入QtDemo,添加QGis并加载tif遥感图的Demo

前言 使用QGis的目的是进行二次开发,或者说是融入我们的应用(无人车、无人船、无人机),本片描述搭建QGis二次基础开发环境,由于实在是太长了,进行了分篇: 上半部分:主要是安装好后,使用QtCreator可以使用QGIs的apps下的Qt使用对应的编译器编译不带qgis的空工程。 下半部分:在上

QGIS开发笔记(二):Windows安装版二次开发环境搭建(上):安装OSGeo4W运行依赖其Qt的基础环境Demo

前言 使用QGis的目的是进行二次开发,或者说是融入我们的应用(无人车、无人船、无人机),本片描述搭建QGis二次基础开发环境,由于实在是太长了,进行了分篇: 上半部分:主要是安装好后,使用QtCreator可以使用QGIs的apps下的Qt使用对应的编译器编译不带qgis的空工程。 下半部分:在上

[转帖]jmeter压力测试

使用jmeter 进行并发压力测试。 首先需要安装好jmeter,下面以widows操作平台为例: 1、确保电脑安装并配置好java环境;具体怎么下载和配置请自行百度; 2、登录jmeter官网http://jmeter.apache.org/download_jmeter.cgi,点击如下图操作

Git 常用命令

博客地址:https://www.cnblogs.com/zylyehuo/ 虚拟机基本配置 git 基本指令 # 在 centos7 环境下查看系统版本 cat /etc/redhat-release # (1)安装 git yum install -y git # windows安装地址:htt

Windows server 2016 搭建DNS服务器

Windows server 2016 搭建DNS服务器 环境说明: 1、Windows server 2016标准版 实操步骤: 1、添加DNS服务器功能 1.1、点击win图标打开菜单,点击打开服务器管理器。 1.2、点击“ 管理 ”,点击“ 添加角色和功能 ” 下一步 基于角色或功能的安装,下

C#S7.NET实现西门子PLCDB块数据采集的完整步骤

前言 本文介绍了如何使用S7.NET库实现对西门子PLC DB块数据的读写,记录了使用计算机仿真,模拟PLC,自至完成测试的详细流程,并重点介绍了在这个过程中的易错点,供参考。 用到的软件: 1.Windows环境下链路层网络访问的行业标准工具(WinPcap_4_1_3.exe)下载链接:http

Selenium环境搭建

Selenium环境搭建 基于windows 10 素材 素材下载地址说明 python https://registry.npmmirror.com/binary.html?path=python/ 官网 https://mirrors.huaweicloud.com/python/ 国内地址 h

[转帖]【存储测试】vdbench存储性能测试工具

一、前言 1、介绍 vdbench是一个I/O工作负载生成器,通常用于验证数据完整性和度量直接附加(或网络连接)存储性能。它可以运行在windows、linux环境,可用于测试文件系统或块设备基准性能。 2、版本包获取 vdbench版本包 下载链接 jdk版本包 下载链接(windows) 下载链