每日更新

作者:亚投体育手机版    发布时间:2020-01-01 21:56     浏览次数 :

[返回]

 

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、代码量十分的小,独有二十一个类,完全开源。

 

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下载。下载后遵照本身Computer的本子选择叁十个人依旧六拾叁位张开设置。笔者将六十四人的解压后放到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中读写复杂对象。

上一篇:谁家茶几最牛B
下一篇:用户维度篇