基于.net ,使用几种常见的NoSQL数据库
程序员文章站
2024-02-04 18:59:40
[toc] "示例完整源码地址" 2020年1月10日 10:10:10 shanzm 0 .net中的缓存对象 MemoryCache对象 HttpContext.Cache (Asp.net)对象 示例:(详见: "001MemoryCache" ) 1.MemCached 安装包下载: "推荐 ......
-
示例完整源码地址2020年1月10日 10:10:10shanzm
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
安装redis(官方为windows版,)
常用的命令:
安装redis gui客户端:redisdesktopmanager ()
nuget:pm>install-package stackexchange.redist(注意其所支持的dotnet版本)
官方地址-
redis中的六种数据类型的具体操作及使用案例
005使用redis计算新闻点击量
006redis中的list使用
007模拟注册发送邮件验证
008redis中的set使用
009redis中的sorted set使用
010redis中使用sorted set实现热搜
011redis中使用hash使用
012redis中的geo使用(注意只支持最新版本的redis)
015redis实现随机分红包
示例:(详见: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);