zoukankan      html  css  js  c++  java
  • 模拟搭建Web项目的真实运行环境(六)

    今天把Redis和Mongodb的操作整理一下,方便日后自己查看,废话不多说,直接进入主题。

     

    一、Redis

    1. 引用StackExchange.Redis.dll

    由于ServiceStack.Redis在4.0以上已经是商业版本需要收费了,

    所以在这里我选择了StackExchange.Redis应用于项目中。

     

    首先需要获取StackExchange.Redis.dll,这里有几种方式可以得到:

    ① 直接下载stackexchange.redis.dll运行(推荐,简单方便)

     

    ② 去redis官网下载客户端的C#版本,然后在本地运行编译,生成stackexchange.redis.dll

    (小狼几次由于网络不稳定,编译时在还原NuGet包的过程中总是不通过,导致生成的dll有问题)

     

    ③ 在 vs 里面,用nuget安装stackexchange.redis库

    (通过NuGet的方式安装,框架中会多出一些可能不需要用到的库,增加项目大小)

     

    这里我提供了一个自己上传的stackexchange.redis.dll,有需要的朋友可以下载。

    百度网盘:http://pan.baidu.com/s/1qXUM39M 密码:vnrz

     

    下载好文件加压之后在项目中引用,然后在代码中添加:

    using StackExchange.Redis;

     

    2. 创建一个Conn对象

    ConnectionMultiplexer conn = ConnectionMultiplexer.Connect("192.168.1.111,password=admin");

    上面的192.168.1.111是redis服务的ip地址,admin是redis服务的密码。

     

    3. 创建一个db对象

    IDatabase db = conn.GetDatabase(0);

    参数0代表选择的是redis服务端的0数据库

     

    4. 通过对象db就可以实现对redis的操作了

    在下一篇附上一个小案例,简单封装了对Redis和Mongodb的操作,

    有兴趣的可以下载看看。这里就不对db的方法一个一个展开介绍了。

     

    二、Mongodb驱动

    1. 从mongo官网下载C#驱动

    官网地址:http://mongodb.github.io/mongo-csharp-driver/2.2/getting_started/installation/

    百度网盘:http://pan.baidu.com/s/1c2v9tIS 密码:lt8m

     

    2. 解压下载好的驱动,在项目中引用三个文件:

    MongoDB.Bson.dll

    MongoDB.Driver.dll

    MongoDB.Driver.Core.dll

     

    3. 在程序代码中添加:

    using MongoDB.Bson;

    using MongoDB.Driver;

     

    4. 创建Client对象

    IMongoClient client = new MongoClient("mongodb://192.168.1.111:27017");

     

    5.创建Database对象

    IMongoDatabase db = client.GetDatabase("db_sys");

     

    6. 创建Collection对象

    IMongoCollection<UserEntity> collection = db.GetCollection<UserEntity>("user");

     

    7. 筛选条件

    在介绍CRUD之前,先介绍筛选条件中几个重要的语法,

    在这里我们把一个筛选条件(filter)作为原子来处理,

    设为$a(后面小狼封装的类库中也是根据这个原理来设计)

    (1)等于(Equal)

    $a = key: value

    *案例:

    查询数据:老狼、小杨、C+、阿东、小豪、小静、老狼大傻逼

    查询条件:key: '老狼'}

    查询结果:老狼

     

    (2)大于(Greater)

    $a = key: {$gt: value}

    *案例:

    查询数据:20、21、22、23

    查询条件:key: {$gt: 21}

    查询结果:22、23

     

     

    (3)小于(Less)

    $a = key: {$lt: value}

    *案例:

    查询数据:20、21、22、23

    查询条件:key: {$lt: 21}

    查询结果:20

     

    (4)大于等于(GreateOrEqual)

    $a = key: {$gte: value}

    *案例:

    查询数据:20、21、22、23

    查询条件:key: {$gte: 21}

    查询结果:21、22、23

     

    (5)小于等于(LessOrEqual)

    $a = key: {$lte: value}

    *案例:

    查询数据:20、21、22、23

    查询条件:key: {$lte: 21}

    查询结果:20、21

     

    (6)不等于(NotEqual)

    $a = key: {$ne: value}

    *案例:

    查询数据:20、21、22、23

    查询条件:key: {$ne: 21}

    查询结果:20、22、23

     

    (7)开区间(Between)

    $a = key: {$gt: value0, &lt: value1}

    *案例:

    查询数据:20、21、22、23

    查询条件:key: {$gt: 21, &lt: 23}

    查询结果:22

     

    (8)包含(In)

    $a = key: {$in: array}

    *案例:

    查询数据:0、1、2、3

    查询条件:key: {$in: [1,2]}

    查询结果:1、2

     

    (9)不包含(NotIn)

    $a = key: {$nin: array}

    *案例:

    查询数据:0、1、2、3

    查询条件:key: {$nin: [1,2]}

    查询结果:0、3

     

    (10)模糊查询(Like)

    ①必须以指定值开头:key: /^value/

    ②指定值前面必须有其他值:key: /.value/

    ③包含指定值:key: /value/

    *案例:

    查询数据:小狼、老狼、狼群、狼窝、灰太狼、天狼星、小杨

    查询条件:

    ①$a = key: /^狼/

    ②$a = key: /.狼/

    ③$a = key: /狼/

    查询结果:

    ①狼群、狼窝

    ②小狼、老狼、灰太狼、天狼星

    ③小狼、老狼、狼群、狼窝、灰太狼、天狼星

    其实你可以发现,第一种和第二种的合集就是第三种

     

    (11)逻辑与(And)

    假设$a = key:value,

    则$c = $a, $b

     

    (12)逻辑或(Or)

    假设$a = key:value,

    则$c = $or:[{$a}, {$b}]

     

    8. 分页排序查询

    collection.Find(filter, null).Sort("{ctime: -1}").Skip((index-1) * size).Limit(size).ToList<T>();

     

    9. 创建

    UserEntity entity = new UserEntity();

    collection.InsertOne(entity);

     

    10.更新

    filter:更新时的筛选条件

    update:更新的内容

    collection.UpdateOne(filter, update);

     

    11. 删除

    collection.DeleteOne("{_id: '00010001'}");

    关于mongo驱动的CRUD的介绍告一段落,下一篇介绍一个小案例,

    主要是一个用户详情表格的增删改查,主要以mongo驱动的使用为主,

    其中增删改查用的是mongodb,而用户ID的自增用到了redis,

    最后推荐一位前辈总结的一篇文章,写的很详细:

    http://www.cnblogs.com/wuhuacong/archive/2016/01/05/5098348.html

     

     

  • 相关阅读:
    【Framework】HTTP运行期与页面执行模型
    【Framework】深入研究Asp.net页面的生命周期
    【WCF】Silverlight+wcf+自定义用户名密码验证
    【缓存】EF4ProviderWrappers
    【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
    【缓存】利用Cache防止同一帐号重复登录
    【缓存】.net中Cache管理操作
    【缓存】系统缓存全解析 (上)
    【缓存】系统缓存全解析 (中)
    【缓存】系统缓存全解析 (下)
  • 原文地址:https://www.cnblogs.com/zhengjiafa/p/5783296.html
Copyright © 2011-2022 走看看