前言

本文提供全网最完整的Redis入门指导教程,下面我们从下载Redis安装包开始,一步一步的学习使用。

下载Redis

官网提供的Redis安装包是服务于Linux的,而我们需要在Window下使用Redis,所以,我们去下面这个网址中下载。

Redis的下载地址:https://github.com/microsoftarchive/redis/releases

如下图所示,Redis的windows版是由microsoftarchive提供,是微软的一个工作小组,所以我们可以选择完全信任,下面我们选择最新版的Redis版本下载(可以看到,尽管是最新版本,但最后一次提交已经是2016年了)

下载完成后解压到文件夹,得到文件如下:

重要文件讲解:

redis-server.exe:Redis服务端宿主程序,运行后会启动一个控制台窗体,该窗体是宿主程序,如关闭窗体,则Redis服务关闭。

redis-check-dump.exe:本地数据库检查程序。

redis-check-aof.exe:更新日志检查程序。

redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询。

redis-cli.exe: Redis客户端程序,服务端开启后,可以通过该客户端进行命令测试。(运行后,会启动一个控制台窗体,可在控制台内输入命令)

Windows Service Documentation.docx:Redis服务端使用文档。

redis.windows-service.conf:Redis启动服务默认加载的配置文件(下文会介绍如何将Redis服务已Windows服务模式启动),双击redis-server.exe启动时并不加载该文件,双击exe启动时会提示未指定配置文件,使用默认配置,这个默认配置应该是exe内部编写的。

redis.windows.conf :Redis配置文件,其内容和redis.windows-service.conf是一模一样的,相当于一个备份,如果希望Redis读取的配置文件是redis.windows.conf ,则需要对Redis进行命令操作,重新设置配置文件。

了解Redis文件信息后,我们运行redis-server.exe,然后我们编写一个C#的控制台项目访问Redis。

Redis访问

C#想访问Redis需要使用开源类库,那么应该使用哪个类库呢?

打开Redis的中文官网http://www.redis.cn/,在客户端菜单下可以发现C#可用的Redis客户端很多,如下图:

这里我们使用ServiceStack.Redis来访问Redis。

创建项目

首先我们创建一个项目RedisConsole,然后在Nuget下搜索ServiceStack.Redis,如下图:

然后创建一个RedisManager类来管理Redis,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using ServiceStack.Redis;
using ServiceStack.Text;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace RedisConsole
{
    /// <summary>
    /// RedisManager类主要是创建链接池管理对象的
    /// </summary>
    public class RedisManager
    {
        /// <summary>
        /// 绑定本机Redis
        /// </summary>
        private static string ConnStr = "localhost:6379";//password@ip:port  123@localhost:6379
        private static PooledRedisClientManager _prcm;
         
        /// <summary>
        /// 静态构造方法,初始化链接池管理对象
        /// </summary>
        static RedisManager()
        {
            _prcm = CreateManager(new string[] { ConnStr }, new string[] { ConnStr });
        }
        /// <summary>
        /// 创建链接池管理对象
        /// </summary>
        private static PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts)
        {
            //WriteServerList:可写的Redis链接地址。
            //ReadServerList:可读的Redis链接地址。
            //MaxWritePoolSize:最大写链接数。
            //MaxReadPoolSize:最大读链接数。
            //AutoStart:自动重启。
            //LocalCacheTime:本地缓存到期时间,单位:秒。
            //RecordeLog:是否记录日志,该设置仅用于排查redis运行时出现的问题,如redis工作正常,请关闭该项。
            //RedisConfigInfo类是记录redis连接信息,此信息和配置文件中的RedisConfig相呼应
            // 支持读写分离,均衡负载
            return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
            {
                MaxWritePoolSize = 5, // “写”链接池链接数
                MaxReadPoolSize = 5, // “读”链接池链接数
                AutoStart = true,
            },
            0,//初始化数据库 默认有16个数据 这里设置初始化为第0个
            50,//连接池数量
            5//连接池超时秒数
            )
            {
                ConnectTimeout = 6000,//连接超时时间,毫秒
                SocketSendTimeout = 6000,//数据发送超时时间,毫秒
                SocketReceiveTimeout = 6000,// 数据接收超时时间,毫秒
                IdleTimeOutSecs = 60,//连接最大的空闲时间 默认是240
                PoolTimeout = 6000 //连接池取链接的超时时间,毫秒
            };
        }
        /// <summary>
        /// 客户端缓存操作对象
        /// </summary>
        public static IRedisClient GetClient()
        {
            if (_prcm == null)
            {
                _prcm = CreateManager(new string[] { RedisPath }, new string[] { RedisPath });
            }
            return _prcm.GetClient();
        }
    }
 }

然后在Main函数里使用RedisManager来进行写入和读取,代码如下:

1
2
3
4
5
6
7
8
9
static void Main(string[] args)
        {
            var redisClient = RedisManager.GetClient();
            redisClient.Set<string>("Name", "Kiba518");
            redisClient.Set<int>("Age", 10000); 
            Console.WriteLine($"MyName:{redisClient.Get<string>("Name")}====MyAge:{redisClient.Get<int>("Age")}");
            redisClient.Dispose();  //释放内存
            Console.ReadLine();
        }

运行结果如下图所示:

可以看到,我们成功的完成了Redis的插入和读取。

但我们不满足于此,我们需要一个图形管理界面更直观的查看Redis数据库。

下载RedisStudio。

下载地址:https://github.com/cinience/RedisStudio/releases

运行RedisStudio,连接本地Redis,如下图:

连接成功后,点击Data菜单,查看数据。

可以看到,我们添加的数据被写进了第0个数据库(Redis默认会创建16个数据库,数据库编号以0开头)。

Redis的Windows服务

使用Cmd的命令窗口作为Redis的宿主进程确实有一些问题,比如关闭了就不能用了,比如不能开机自启。为了让Redis服务可以更好的运行,我们需要把Redis的宿主改成Windows是服务。

这件事不需要我们自行开发,redis-server.exe中已经提供了这些功能,它的Main函数会处理一些他接受的参数。

现在我们使用命令行启动redis-server.exe。

注:使用Redis命令时,需要在先将目录跳转到Redis所在文件夹,如【cd/d D:\Redis-x64-3.2.100】

1
redis-server.exe --service-install redis.windows.conf --loglevel verbose

参数介绍:

service-install:启动Redis服务安装,必须是第一个参数。

redis.windows.conf:指定配置文件。

loglevel verbose:日志级别。

CMD运行结果如下图所示:

查看服务。

如上图所示,服务已经成功的安装到系统中了,右键就可以启动服务了。

当然我们也可以通过命令行启动和关闭服务,命令如下:

启动服务命令:redis-server.exe --service-start

关闭服务命令:redis-server.exe --service-stop

删除服务命令:redis-server.exe --service-uninstall

CMD运行关闭服务结果如下图:

注意:redis.windows.conf文件默认配置的IP需要修改成本机的IP,window服务才能正常启动。

配置密码

我们都知道数据库是需要密码的,这样才能保证安全性,不然任何一个知道你服务器IP的人只要按个端口试一遍就可以连接你的数据库了。

Redis的数据库密码需要在配置文件中设置,默认是没有密码的。

因为上文我们配置Windows服务时,指定了redis.windows.conf文件为配置文件,所以我们现在需要在redis.windows.conf文件中配置密码。

打开redis.windows.conf文件,搜索【# requirepass foobared】定位到配置密码的行(配置文件中#为注释符),然后在该行下方输入requirepass 123456,其中123456就是数据库的密码了,如下图所示:

现在我们测试一下,运行我们刚才的项目,结果如下图所示:

可以看到,系统提示了验证错误的异常。

这是因为我们上文配置的连接字符串是【localhost:6379】这里面只有IP和端口,现在因为有了密码所以这个字符串不在合法了。

现在我们将密码加入进字符串,修改代码如下:

1
private static string ConnStr = "123456@localhost:6379";

项目成功运行,访问Redis数据库成功,如下图:

----------------------------------------------------------------------------------------------------

代码已经传到Github上了,欢迎大家下载。

Github地址:https://github.com/kiba518/RedisConsole

----------------------------------------------------------------------------------------------------

转载

https://www.cnblogs.com/kiba/p/13085327.html

 

Redis入门指导的更多相关文章

  1. 全网最完整的Redis入门指导

    前言 本文提供全网最完整的Redis入门指导教程,下面我们从下载Redis安装包开始,一步一步的学习使用. 下载Redis 官网提供的Redis安装包是服务于Linux的,而我们需要在Window下使 ...

  2. 新手入门指导:Vue 2.0 的建议学习顺序

    起步 1. 扎实的 JavaScript / HTML / CSS 基本功.这是前置条件. 2. 通读官方教程 (guide) 的基础篇.不要用任何构建工具,就只用最简单的 <script> ...

  3. 安装redis入门

    redis官网:redis.io redis版本用的是redis-3.2.2 $ wget http://download.redis.io/releases/redis-3.2.2.tar.gz $ ...

  4. redis入门笔记(2)

    redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...

  5. redis入门笔记(1)

    redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...

  6. Redis入门指南

    随着互联网业务对性能需求日益强烈,作为Key/Value存储的Redis具有数据类型丰富和性能表现优异的特点.如果能够熟练地驾驭它,不管是把它用做缓存还是存储,对很多大型应用都很多帮助.新浪作为世界上 ...

  7. React-Native入门指导之iOS篇 —— 一、准备工作

    React-Native 入门指导系列教程目录 一.准备工作 (已完成) 二.项目介绍与调试 三.CSS样式与Flex布局 四.常用UI控件的使用 五.JSX在React-Native中的应用 六.事 ...

  8. React-Native入门指导之iOS篇

    React-Native 入门指导系列教程目录 一.准备工作 (已完成) 二.项目介绍与调试 三.CSS样式与Flex布局 四.常用UI控件的使用 五.JSX在React-Native中的应用 六.事 ...

  9. Linux上安装使用boost入门指导

    Data Mining Linux上安装使用boost入门指导 获得boost boost分布 只需要头文件的库 使用boost建立一个简单的程序 准备使用boost二进制文件库 把你的程序链接到bo ...

随机推荐

  1. laradock使用问题汇总

    laradock简介 一套完整的基于Docker的PHP开发环境.包含了预先打包的Docker镜像,所有预先配置都是为了提供一个完美的PHP开发环境(中文文档).PS: 不是最新版的 windows1 ...

  2. 如何获取公网IP的mac地址

    如何获取远程IP的mac地址 思路分析 由于java本身没有相关的jar包进行获取,所以这里介绍从其他的方面进行入手和实践 使用的工具对比: tcpdump tshark pcap4j 都可以达到抓包 ...

  3. python sklearn库实现逻辑回归的实例代码

    Sklearn简介 Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression).降维(Dimensionality Red ...

  4. 知识解析:C语言函数有一些什么?为你呈现最全函数大全

    大家双节快乐呀~国庆节过去了一半,大家放了几天假呀?玩的开心吗? 如果假日没有其他安排,不要宅在家虚度光阴哦~看看我的文章或者视频学习一些知识吧~   今天为大家分享C语言库函数知识. 以下图片以字母 ...

  5. 测试Hessian反序反序列化 客户端少字段和多字段时能否成功

    import java.io.*; import com.caucho.hessian.io.HessianInput; import com.caucho.hessian.io.HessianOut ...

  6. Elements-of-Python_02_DataType

    (内容包括数据类型,运算符) 1.数据类型Data Types 1.1 简介Brief Introduction Python3中的数据类型,类型关键字,赋值,见下表: 1.1数字Number Pyt ...

  7. 记一次用python 的ConfigParser读取配置文件编码报错

    记一次用python 的ConfigParser读取配置文件编码报错 ...... raise MissingSectionHeaderError(fpname, lineno, line)Confi ...

  8. socket阻塞与非阻塞,同步与异步,select,pool,epool

    概念理解 一.与I/O相关的五个重要概念 1. 第一个概念:用户空间与内核空间 1. 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方) 2. ...

  9. 第7.14节 Python类中的实例方法详析

    第7.14节 Python类中的实例方法详析 一.    实例方法的定义 在本章前面章节已经介绍了类的实例方法,实例方法的定义有三种方式: 1.    类体中定义实例方法 第一种方式很简单,就是在类体 ...

  10. 第10.8节 Python包的导入方式详解

    一. 包导入与模块导入的关系 由于包本质上是模块,其实对模块的许多导入方法都适用于包,但由于包的结构与模块有差异,所以二者还是有些区别的: 对包的导入,实际上就是包目录下的__init__.py文件的 ...