用C#实现redis存储和读取DataTable或DataSet数据

1.存储

通过将DataTable或者DataSet数据进行序列化转换成内存流,将流化的对象放入字节数组,然后存到字节数组中

        /// <summary>
        /// 插入DataTable缓存
        /// </summary>
        /// <param name="key">缓存键</param>
        /// <param name="item">缓存对象</param>
        /// <param name="minute">过期时间(分钟)</param>
        public static void SetMemByDataTable(string key, DataTable dt, int minute)
        {
 
            DateTime expiryTime = DateTime.Now.AddMinutes(minute);
            System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();//定义BinaryFormatter以序列化DataSet对象   
            System.IO.MemoryStream ms = new System.IO.MemoryStream();//创建内存流对象   
            formatter.Serialize(ms, dt);//把DataSet对象序列化到内存流   
            byte[] buffer = ms.ToArray();//把内存流对象写入字节数组   
            ms.Close();//关闭内存流对象   
            ms.Dispose();//释放资源   
            Redis.Set(key, buffer, expiryTime);
        } 

2.读取

将数据从Redis中读取出来,通过二进制读取出来的是一个object对象,然后将该对象强制转换为对应的数据类型

        public static DataTable GetMemByDataTable(string key)
        {
            var item = Get(key);
            return (DataTable)item;
        }