浅谈Redis

Redis,内存中的数据结构存储,作为数据库,缓存和消息代理。它支持的数据结构,如字符串、哈希表、列表、设置、排序设置范围查询,位图,hyperloglogs和半径查询地理信息的索引。

使用内置的复制,Lua脚本,LRU逐出,磁盘上的持久性交易和不同等级,并且可以通过Redis的前哨和自动分区Redis集群高可用性。为了实现其出色的表现,Redis是工作在内存中的数据集

实现简单的读写

一、新建一个控制台项目

1、NuGet安装

2、写入

ConnectionMultiplexer con = RedisConnection.Connection;
IDatabase db = con.GetDatabase(1);//不写默认是连接到数据库0
Student st = new Student { Age=12,Name="yuan",School="TaiKang"};
db.Set("student",st);

3、效果如图

4、读取

            ConnectionMultiplexer con = RedisConnection.Connection;
            IDatabase db = con.GetDatabase(1);//不写默认是连接到数据库0
            Student st = new Student();
            st = db.Get<Student>("student");

二、辅助类

1、实体

    [Serializable]
    public class Student
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string School { get; set; }
    }

2、链接数据库(Redis)

public class RedisConnection
    {

        private static readonly Lazy<ConnectionMultiplexer> _connection = new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect("localhost:6379"));

        public static ConnectionMultiplexer Connection { get { return _connection.Value; } }
    }

3、方法

public static class RedisExtension
    {
        public static TResult Get<TResult>(this IDatabase cache, string key)
        {
            return Deserialize<TResult>(cache.StringGet(key));
        }

        public static void Set<TIn>(this IDatabase cache, string key, TIn value)
        {
            cache.StringSet(key, Serialize(value));
        }

        static byte[] Serialize(object o)
        {
            if (o == null)
                return null;
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            using (MemoryStream mStream = new MemoryStream())
            {
                binaryFormatter.Serialize(mStream, o);
                byte[] objectDataAsStream = mStream.ToArray();
                return objectDataAsStream;
            }
        }

        static TResult Deserialize<TResult>(byte[] stream)
        {
            if (stream == null)
                return default(TResult);
            BinaryFormatter formatter = new BinaryFormatter();
            using (MemoryStream memStream = new MemoryStream(stream))
            {
                TResult result = (TResult)formatter.Deserialize(memStream);
                return result;
            }
        }
    }

 

posted @ 2018-03-31 16:03  之广  阅读(172)  评论(0编辑  收藏  举报
我的博客——易之广