C# Redis安装 使用教程

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: C# Redis安装 使用教程

前言:lz自打工作以来第一次遇到电脑问题需要重装系统,全盘格式化。打击是沉痛的。特别伤。 然后需要重新在本地部署 redis。这是写这篇博客的原因。希望对大家有所帮助,安装资源和引用DLL可以引用 只用于学习 ( windows环境安装 )

一:安装Redis

首先我们需要在本地或是服务器安装Redis。安装包可以去redis官网下载,去Gethub上down 我这里直接给我的百度云

链接:https://pan.baidu.com/s/1WJ48XMaHOmgb1J0KaQkdEw 密码:xjf4 下载后解压

本地的话 你可以直接打开 redis-server.exe这个应用程序。也可以打开cmd命令 然后把路径换成你redis文件的路径 我的是放在 c: edis 可以跟我的来,方便搬运代码 切换文件路径 cd

然后我们启动redis服务,运行 redis-server.exe redis.windows.conf

出现这个界面说明OK了,这个窗口别关 如果关闭了 重新来一遍

继续,再打开一个cmd窗口,切换到redis目录下面

这里解释一下这个 127.0.0.1 是本地访问,相当于localhost 6379是redis默认的端口

继续,redis是存储键值对的所以我们测试一下

set一个 key value

get 一个key

机制就是把数据set 到 redis的数据库里,就是我们说的缓存 用的时候在get取值

接下来我们下载一个redis可视化工具,作用是相当于我们平时使用的数据库 可以去官网上下载,可以我直接上资源,方便 链接:https://pan.baidu.com/s/1K7QtxSVV_15kxP8zkEvIng 密码:k4f8

解压文件,安装成功 打开

字面意思,很简单吧

name 测试阶段随便写 HOST呢 就是主机IP地址 链接上之后 打开我们的DB

crtest666 wuchen 这个键值队是成功添加了的 (关于redis key是名字无所谓 value可以是列表,集合,自由使用,今天先不讲这个)

二:C# 中使用redis(查找,增加,删除的使用)

首先我们需要添加redis的引用。nuget包 搜索redis第一个就是。--StackExchange.Redis

根据运行的环境不同。还需要以下dll

  1.ServiceStack.Common.dll

  2.ServiceStack.Interfaces.dll

  3.ServiceStack.Text.dll

可以去Gethub上去down, https://github.com/ServiceStack/ServiceStack.Redis 真的慢

博主百度云资源: 链接:https://pan.baidu.com/s/1gQLJlIcHhZtPikIgFHnHxA 密码:scqt

Lg:本博一直用win10,按理说只需要这些DLL的 现在装成win7,发现不行了 后来我在Nuget包中添加 RedisHelper,(现在好像直接叫做Redis了,看下备注说明确认一下)

这里举个很简单的使用redis的例子

添加一个控制台应用程序

然后在主程序类 program.cs 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace crtest
{

class Program
{
    /// <summary>
    /// 基无尘 18-8-31
    /// </summary>
    /// <param name="args"></param>
    static void Main(string[] args)
    {
        Console.WriteLine("Redis写入缓存:wuchengtest"); //添加

        RedisCacheHelper.Add("wuchen", "jiwuchen", DateTime.Now.AddDays(1));

        Console.WriteLine("Redis获取缓存:crtest666");//查找
        string str3 = RedisCacheHelper.Get<string>("crtest666");
        Console.WriteLine(str3);

        RedisCacheHelper.Remove("hellow");//删除
        string str = RedisCacheHelper.Get<string>("hellow");//查看是否删除成功
        Console.WriteLine(str == null ? "未找到" : str);
        Console.ReadKey();
    }
}

}
然后添加一个帮助类 作用类似于我们常用的DbHelper

using ServiceStack.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace crtest
{
public class RedisCacheHelper

{
    private static readonly PooledRedisClientManager pool = null;
    private static readonly string[] redisHosts = null;
    public static int RedisMaxReadPool = 3;
    public static int RedisMaxWritePool = 1;

    static RedisCacheHelper()
    {
        var redisHostStr = "127.0.0.1:6379";

        if (!string.IsNullOrEmpty(redisHostStr))
        {
            redisHosts = redisHostStr.Split(',');

            if (redisHosts.Length > 0)
            {
                pool = new PooledRedisClientManager(redisHosts, redisHosts,
                    new RedisClientManagerConfig()
                    {
                        MaxWritePoolSize = RedisMaxWritePool,
                        MaxReadPoolSize = RedisMaxReadPool,
                        AutoStart = true
                    });
            }
        }
    }

    #region Add
    public static void Add<T>(string key, T value, DateTime expiry)
    {
        if (value == null)
        {
            return;
        }

        if (expiry <= DateTime.Now)
        {

            Remove(key);

            return;
        }

        try
        {
            if (pool != null)
            {
                using (var r = pool.GetClient())
                {
                    if (r != null)
                    {
                        r.SendTimeout = 1000;
                        r.Set(key, value, expiry - DateTime.Now);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "存储", key);
        }

    }


    public static void Add<T>(string key, T value, TimeSpan slidingExpiration)
    {
        if (value == null)
        {
            return;
        }

        if (slidingExpiration.TotalSeconds <= 0)
        {
            Remove(key);

            return;
        }

        try
        {
            if (pool != null)
            {
                using (var r = pool.GetClient())
                {
                    if (r != null)
                    {
                        r.SendTimeout = 1000;
                        r.Set(key, value, slidingExpiration);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "存储", key);
        }
    }

    public static T Get<T>(string key)
    {
        if (string.IsNullOrEmpty(key))
        {
            return default(T);
        }

        T obj = default(T);

        try
        {
            if (pool != null)
            {
                using (var r = pool.GetClient())
                {
                    if (r != null)
                    {
                        r.SendTimeout = 1000;
                        obj = r.Get<T>(key);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "获取", key);
        }


        return obj;
    }
    #endregion

    public static void Remove(string key)
    {
        try
        {
            if (pool != null)
            {
                using (var r = pool.GetClient())
                {
                    if (r != null)
                    {
                        r.SendTimeout = 1000;
                        r.Remove(key);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "删除", key);
        }

    }

    public static bool Exists(string key)
    {
        try
        {
            if (pool != null)
            {
                using (var r = pool.GetClient())
                {
                    if (r != null)
                    {
                        r.SendTimeout = 1000;
                        return r.ContainsKey(key);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "是否存在", key);
        }

        return false;
    }
}

}
OK,生成一下 然后运行看看效果

OK,我们去redis-server上看看效果,也可以用上面的控制台来get 看看效果(cmd命令窗口自始至终都是开着的)

可以看到是成功添加的。好啦

通过简单的两句代码,慢慢发现编程的乐趣

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4天前
|
NoSQL Linux 测试技术
Redis的安装(Linux版)
Redis的安装(Linux版)
41 1
|
14天前
|
NoSQL Linux Redis
linux 下和win下安装redis 并添加开机自启 图文详解
linux 下和win下安装redis 并添加开机自启 图文详解
17 0
|
2月前
|
NoSQL Redis 数据安全/隐私保护
Docker中Redis的安装与配置
本文主要讲解如何在Docker环境中搭建Redis环境,并进行相关配置
245 5
Docker中Redis的安装与配置
|
1月前
|
NoSQL Linux Redis
Linux系统中安装redis+redis后台启动+常见相关配置
Linux系统中安装redis+redis后台启动+常见相关配置
|
2月前
|
NoSQL Redis Docker
在docker中安装redis,并且阿里云服务器配置
在docker中安装redis,并且阿里云服务器配置
183 1
|
22天前
|
NoSQL Linux Redis
Linux安装Redis
Linux安装Redis
29 0
|
26天前
|
NoSQL 关系型数据库 MySQL
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
142 1
|
1月前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
207 0
|
1月前
|
NoSQL Redis 数据安全/隐私保护
Docker安装和使用Redis
Docker安装和使用Redis
77 0
|
2月前
|
存储 NoSQL Redis
【docker专题_06】docker安装redis
【docker专题_06】docker安装redis