每日更新

2020-01-06 03:44 来源:未知

 

5.

Redis订阅和发表格局和Redis事务

-------------------Redis事务-------------------

1、概念:

    redis中的事务是大器晚成组命令的聚众。事务同命令相通都以redis的纤维施行单位,三个业务中的命令要么都执行,要么都不实施。

 

2、事务的二种属性

    1、事务是叁个单身的隔断操作:事务中的全数命令都会连串化、按顺序的实施。事务在实践的进度中,不会被别的客户端发送过来的授命伏乞所打断。

    2、redis事务是原子。原子意味着要么全体的通令都奉行,要么都不施行。

4.

String能够包罗其余数据,举个例子jpg图片可能体系化的目的;string类型是Redis最宗旨的数据类型,八个键最大能储存512MB

Hashes 是多个string类型的田野先生和value的映射表,hash特别切合用来存款和储蓄对象

 List列表类型能够存款和储蓄叁个静止的字符串列表,常用的操作时向列表两端添欧成分,或然获得列表的某二个部分;列表类型内部是行使双向链表(double linked list)实现的,所以向列表两端添卢比素的年月复杂度为O(I),获取越左近两端的成分,速度就越快。

列表具备有序性,集合具备唯豆蔻梢头性。

集合Set:八个集结类型键之间还足以拓宽并集、交集、差集运算。

有序聚焦Sort-Set...

 

3.

Redis是一个用的相比分布的Key/Value的内部存款和储蓄器数据库,天涯论坛博客园、Github、StackOverflow 等大型应用中都用其用作 高速缓存。

Redis本人没有提供Windows版本的,况兼在Windows上也不太平静,平常都将其构造到Linux情况下,Redis能够在其官英特网下载

Beetle.Redis尽管非常不够完整,但是作者说多少个亮点:
1、底层特别平稳,大概未有品质损耗。
2、连接数极度平稳,小编用了整个叁个月(经过了双十意气风发的核准),一点难题都未有。
3、代码量超小,唯有18个类,完全开源。

 

2.

 

RedisHelper帮助类

图片 1图片 2

public class RedisManager
 {
  private static PooledRedisClientManager prcm;
  /// <summary>
  /// 创建链接池管理对象
  /// </summary>
  private static void CreateManager()
  {
   string[] writeServerList = SplitString(RedisConfigInfo.WriteServerList, ",");
   string[] readServerList = SplitString(RedisConfigInfo.ReadServerList, ",");
   prcm = new PooledRedisClientManager(readServerList, writeServerList,
        new RedisClientManagerConfig
        {
         MaxWritePoolSize = RedisConfigInfo.MaxWritePoolSize,
         MaxReadPoolSize = RedisConfigInfo.MaxReadPoolSize,
         AutoStart = RedisConfigInfo.AutoStart,
        });
  }
  private static string[] SplitString(string strSource, string split)
  {
   return strSource.Split(split.ToArray());
  }
  /// <summary>
  /// 客户端缓存操作对象
  /// </summary>
  public static IRedisClient GetClient()
  {
   if (prcm == null)
    CreateManager();
   return prcm.GetClient();
  }
  /// <summary>
  /// 缓存默认24小时过期
  /// </summary>
  public static TimeSpan expiresIn = TimeSpan.FromHours(24);
  /// <summary>
  /// 设置一个键值对,默认24小时过期
  /// </summary>
  /// <typeparam name="T"></typeparam>
  /// <param name="key"></param>
  /// <param name="value"></param>
  /// <param name="redisClient"></param>
  /// <returns></returns>
  public static bool Set<T>(string key, T value, IRedisClient redisClient)
  {
   return redisClient.Set<T>(key, value, expiresIn);
  }
  /// <summary>
  /// 将某类数据插入到list中
  /// </summary>
  /// <typeparam name="T"></typeparam>
  /// <param name="key">一般是BiaoDiGuid</param>
  /// <param name="item"></param>
  /// <param name="redisClient"></param>
  public static void Add2List<T>(string key, T item, IRedisClient redisClient)
  {
   var redis = redisClient.As<T>();
   var list = redis.Lists[GetListKey(key)];
   list.Add(item);
  }
  /// <summary>
  /// 获取一个list
  /// </summary>
  /// <typeparam name="T"></typeparam>
  /// <param name="key"></param>
  /// <param name="redisClient"></param>
  /// <returns></returns>
  public static IRedisList<T> GetList<T>(string key, IRedisClient redisClient)
  {
   var redis = redisClient.As<T>();
   return redis.Lists[GetListKey(key)];
  }
  public static string GetListKey(string key, string prefix = null)
  {
   if (string.IsNullOrEmpty(prefix))
   {
    return "urn:" + key;
   }
   else
   {
    return "urn:" + prefix + ":" + key;
   }
  }
 }

View Code

安插安装

3.3将参数写入配置文件

<appSettings>
<add key="WriteServerList" value="127.0.0.1:6379" />
<add key="ReadServerList" value="127.0.0.1:6379" />
<add key="MaxWritePoolSize" value="60" />
<add key="MaxReadPoolSize" value="60" />
<add key="AutoStart" value="true" />
<add key="LocalCacheTime" value="1800" />
<add key="RecordeLog" value="false" />
</appSettings>
3.4读取配置文件参数类

public class RedisConfigInfo
{
 public static string WriteServerList = ConfigurationManager.AppSettings["WriteServerList"];
 public static string ReadServerList = ConfigurationManager.AppSettings["ReadServerList"];
 public static int MaxWritePoolSize = Convert.ToInt32(ConfigurationManager.AppSettings["MaxWritePoolSize"]);
 public static int MaxReadPoolSize = Convert.ToInt32(ConfigurationManager.AppSettings["MaxReadPoolSize"]);
 public static int LocalCacheTime = Convert.ToInt32(ConfigurationManager.AppSettings["LocalCacheTime"]);
 public static bool AutoStart = ConfigurationManager.AppSettings["AutoStart"].Equals("true") ? true : false;
}

 

使用:

protected void btn1_Click(object sender, EventArgs e)
  {
   string UserName;
   //读取数据,如果缓存存在直接从缓存中读取,否则从数据库读取然后写入redis
   using (var redisClient = RedisManager.GetClient())
   {
    UserName = redisClient.Get<string>("UserInfo_123");
    if (string.IsNullOrEmpty(UserName)) //初始化缓存
    {
     //TODO 从数据库中获取数据,并写入缓存
     UserName = "张三";
     redisClient.Set<string>("UserInfo_123", UserName, DateTime.Now.AddSeconds(10));
     lbtest.Text = "数据库数据:" + "张三";
     return;
    }
    lbtest.Text = "Redis缓存数据:" + UserName;
   }
  }

 

Redis安装与开发银行

1. 下载Redis

Redis本人未有提供Windows版本的,而且在Windows上也不太平静,经常都将其配备到Linux情状下,Redis可以在其官英特网下载, MSOpenTech中提供了Windows版本,这里为了学习安装这一本子。

图片 3

点击跳转到Github后,直接点击Zip下载。下载后基于自身计算机的版本接纳三16位依然六11个人张开设置。小编将六十一位的解压后放到D:Redis文件夹下,同一时间将文件夹内的redis.conf也拷贝到该目录下,这么些是redis的安顿音信:

图片 4

2. 启动Redis

在Windows下边启用Redis和开发银行MogoDB同样,需求运用命令行运营,首先定位到该目录,运转如下命令:

D:Redis>redis-server.exe redis.conf

图片 5

因为是在本机运营的,这里要静心端口号,同有的时候间要维持端口不要关闭。

道理当然是那样的你也能够将Redis作为Windows服务在后台一向展开。

3. 使用

今昔再开叁个调控台应用程序连接以前运行的Redis,如下:

D:Redis>redis-cli.exe -h 172.16.147.121 -p 6379

内部 –h前面是本机的ip地址,前边的是端口。

然后就能够实行set 给key为city赋值:

redis 172.16.147.121:6379> set city Shanghai

透过get可以博得钦赐key为city的值了。

redis 172.16.147.121:6379> get city

图片 6

再者,在大家往redis上写多少的时候,Redis服务也会按期的往文件中写多少

图片 7

那边仅轻巧的牵线了get和set命令,更加的多命令能够查阅 

.初探Redis

下载ServiceStack.Redis

和MongoDB相似,在.NET中采纳Redis其实也是运用第三方驱动,官方网站推荐的是应用ServiceStack.Redis 下载后解压得到如下dll

图片 8

.NET项目中使用Redis

新建多少个Console程序,引用上一步骤解压的八个dll。

做一个简约的例子,在.NET中收获早前我们设置的city的值。

class Program
{
    static RedisClient redisClient = new RedisClient("172.16.147.121", 6379);//redis服务IP和端口
    static void Main(string[] args)
    {
        Console.WriteLine(redisClient.Get<string>("city"));
        Console.ReadKey();
    }
}

首先通过 static RedisClient redisClient = new RedisClient("172.16.147.121", 6379卡塔尔(قطر‎;

建设结构连接 ,然后就能够一直用redisClient里面包车型客车Get方法获得key为city的值了。

图片 9

在这段日子的吩咐行中,大家网city中存入了Shanghai,以往大家获取到了这些值。

ServerStack中有那么些主意能够在.NET中调用,其类组织图如下:

图片 10

总结

正文简介了Redis,Redis怎样在Windows下安装,以致哪些在.NET中使用访谈和应用Redis,希望对您具有利于,下文将教授怎么着在.NET中网Redis中读写复杂对象。

TAG标签:
版权声明:本文由银河国际点击登录发布于银河国际点击登录,转载请注明出处:每日更新