【无标题】c# WEBAPI 读写表到Redis

//c# WEBAPI 读写表到Redis

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Net.Http;

using System.Web.Http;

using Newtonsoft.Json;

using StackExchange.Redis;

using System.Data;

using System.Web;

namespace Manage002.web.Controllers

{

RoutePrefix("api/Manage002ReportRedis")

public class Manage002ReportRedisController : ApiController

{

//ConnectionMultiplexer _conn = RedisConnectionHelp.Instance;//初始化

public_org_rpt por = new public_org_rpt();

public_top_rpt ptr = new public_top_rpt();

HttpGet

Route("getGoodtag")

/// <summary>

/// 从缓存中读取erp_goodtag表

/// </summary>

/// <param name="orgid">机构ID</param>

/// <returns></returns>

public DataSet getGoodtag(string orgid)

{

ConnectionMultiplexer _conn = ConnectionMultiplexer.Connect("localhost");

DataSet dsGoodtag = new DataSet();

string sqlGoodtag = @"select id,tagType,tagName,taglevel,parentid,parentlist FROM erp_goodtag ";// where orgid=" + orgid;

if (_conn != null)//开了redis

{

//根据传入的orgid读取Redis中的值

var database = _conn.GetDatabase(0);

string res = database.StringGet(orgid + "_dsGoodtag");

//判断Redis中有没有对应的值

if (string.IsNullOrEmpty(res))

{

//读取数据库

dsGoodtag = ptr.GetList(sqlGoodtag);

DataRow[] drow = null;

//根据传入的ID筛选

if (string.IsNullOrEmpty(orgid))

{

drow = dsGoodtag.Tables[0].Select();

}

else

{

drow = dsGoodtag.Tables[0].Select(" id='" + orgid + "' ");

}

//将筛选出来的记录用表结构保存,方便进行后面的序列化和反序列化

foreach (DataRow row in drow)

{

DataTable dt_sel = dsGoodtag.Tables[0].Clone();

DataRow newRow = dt_sel.NewRow();

newRow.ItemArray = row.ItemArray;

dt_sel.Rows.Add(newRow);

//对结果表进行序列化

string jsonString = JsonConvert.SerializeObject(dt_sel, Formatting.None);

//将序列化的数据保存到Redis

database.StringSet(row["id"].ToString() + "_dsGoodtag", jsonString);

}

}

else

{

//Redis中有数据时直接对数据进行反序列化

DataTable dtGoodtag = JsonConvert.DeserializeObject<DataTable>(res);

dsGoodtag.Tables.Add(dtGoodtag);

}

}

else//直接从数据库里取

{

dsGoodtag = ptr.GetList(sqlGoodtag);

}

return dsGoodtag;

}

}

}

相关推荐
看到我,请让我去学习13 分钟前
QT - QT开发进阶合集
开发语言·qt
weixin_3077791315 分钟前
VS Code配置MinGW64编译SQLite3库
开发语言·数据库·c++·vscode·算法
励志不掉头发的内向程序员1 小时前
STL库——string(类函数学习)
开发语言·c++
一百天成为python专家2 小时前
Python循环语句 从入门到精通
开发语言·人工智能·python·opencv·支持向量机·计算机视觉
Sunhen_Qiletian2 小时前
朝花夕拾(五)--------Python 中函数、库及接口的详解
开发语言·python
hqwest2 小时前
C#WPF实战出真汁07--【系统设置】--菜品类型设置
开发语言·c#·wpf·grid设计·stackpanel布局
前路不黑暗@2 小时前
C语言:操作符详解(二)
c语言·开发语言·经验分享·笔记·学习·学习方法·visual studio
深盾科技3 小时前
Kotlin Data Classes 快速上手
android·开发语言·kotlin
zzywxc7873 小时前
详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。
开发语言·javascript·人工智能·深度学习·金融·prompt·流程图
浮灯Foden4 小时前
算法-每日一题(DAY13)两数之和
开发语言·数据结构·c++·算法·leetcode·面试·散列表