当前位置: 移动技术网 > IT编程>数据库>MongoDB > 基于.net ,使用几种常见的NoSQL数据库

基于.net ,使用几种常见的NoSQL数据库

2020年01月10日  | 移动技术网IT编程  | 我要评论

0 .net中的缓存对象

  • memorycache对象

  • httpcontext.cache (asp.net)对象

示例:(详见:001memorycache

//memorycache是存入到程序进程的内存中的,程序重启之后就没了
//添加引用:system.runtime.caching
//新建一个缓存对象,使用默认的缓存对象
memorycache memcache = memorycache.default;
//缓存以键值对的形式存储,缓存的生命期是10s
memcache.add("name", "shanzm", datetimeoffset.now.addseconds(10));

1.memcached

  • 安装包下载:

  • nuget:pm> install-package enyimmemcached

  • memcached中的cas操作:(详见:003cas操作

示例:(详见:002memcacheddemo

//创建配置对象
memcachedclientconfiguration memconfig = new memcachedclientconfiguration();
memconfig.addserver("127.0.0.1:11211");

//创建memcachedclient对象
using (memcachedclient memclient = new memcachedclient(memconfig))
{
    //写入memcached中
    memclient.store(enyim.caching.memcached.storemode.set, "name", "shanzm");
    memclient.store(enyim.caching.memcached.storemode.set, "age", "100");

    //读取数据
    string name = memclient.get<string>("name");
    if (name == null)
    {
        console.writeline("无缓存");
    }
    else
    {
        console.writeline(name);
    }

    //删除数据
    console.writeline(memclient.get<string>("age"));
    memclient.remove("age");
    if (null == memclient.get<string>("age"))
    {
        console.writeline("已经将key为age的数据从memcached服务器中清除");

    }
    console.readkey();
}

2.redis

示例:(详见:004redisdemo)

//注意此处我们使用异步方法
using (connectionmultiplexer conn = await connectionmultiplexer.connectasync("127.0.0.1:6379"))
{
    //默认是0号数据库,若是其他数据库,如3号数据库,conn.getdatabase(3)
    idatabase db = conn.getdatabase();

    //写入数据
    await db.stringsetasync("name", "张三", timespan.fromseconds(10));

    //批量写入(使用redis中batch对象 见013redis的批量操作)
    keyvaluepair<rediskey, redisvalue>[] kvs = new keyvaluepair<rediskey, redisvalue>[3];

    kvs[0] = new keyvaluepair<rediskey, redisvalue>("a", "a");
    kvs[1] = new keyvaluepair<rediskey, redisvalue>("b", "b");
    kvs[2] = new keyvaluepair<rediskey, redisvalue>("c", "c");
    await db.stringsetasync(kvs);

    //读取数据(查询不到数据返回为null)
    string name = await db.stringgetasync("name");
    string a = await db.stringgetasync("a");

    //删除数据
    db.keydelete("a");

    //判断是否存在某条数据
    if (!db.keyexists("a"))
    {
        messagebox.show("已删除key值为‘a’的数据");
    }

    //对已经存储的数据设置过期时间
    db.keyexpire("b", timespan.fromseconds(10));
}

3.mongodb

  • 安装mongodb()

  • 安装mongodb gui客户端:robo3t

  • nuget:pm>install-package mongodb.driver -version 2.5.0
    (注意默认安装最新版本可能会报错
    亲测2.5.0版本和 .net framework版本是4.6.1完美支持)

  • mongodb中的完整的增删改查,见:017mongodb中的curd

示例:(详见:016mongodbdemo)

//连接mongodb服务,创建对象
mongoclient client = new mongoclient("mongodb://127.0.0.1:27017");
//获取名为:testdb1的数据库,若是没有则创建!
imongodatabase db = client.getdatabase("testdb1");
//获取名为名为personsde表(collection可以理解为表)若是没有则创建!
imongocollection<person> persons = db.getcollection<person>("persons");


person p1 = new person() { id = 0001, name = "shanzm", age = 25 };
person p2 = new person() { id = 002, name = "shanzm" };//mongodb会对age默认填充为0

persons.insertone(p1);
persons.insertone(p2);

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网