.NET 下第一次接触Redis数据库

jopen 9年前
 

关于Redis

1.简介

Redis是著名的NOSQL(Not Only SQL)数据库,是键值对结构。(我只用过键值对结构的)

他为存储键值对做了优化,在大型网站中应用广泛。Redis提供了数据的自动过期处理,而且支持集群。

适合临时存储数据,和存储一些离散的数据。

2.用途

Redis可以存储一些临时数据。可以存储一些,某一时刻有意义,但是又不值得存入数据库的数据。

同时,对于数据统计来说,用户的一次点击,一次登录,都是有意义的。但是这些大量的离散的,单个拿出来毫无意义的数据,显然不适合存储在关系型数据库中。Redis提供了解决这种问题的方案。

3.环境

说明: Redis服务器有Linux、Windows版,Linux版性能好适合生产环境,在自己的windows电脑上配只是为了学习。 不用太较真。

1)Windows下Redis服务器的安装:解压redisbin_x32.zip到硬盘;

.NET 下第一次接触Redis数据库

2)安装RedisWatcher(把Redis运行为系统服务,如果安装过程有问题,直接执行redis-server 也可以),

.NET 下第一次接触Redis数据库

.NET 下第一次接触Redis数据库

3)然后配置RedisWatcher安装目录下的watcher.conf指向redis-server 的路径,然后到Windows 服务中启动RedisWatch。 注意 watcher.conf只能用高级文本编辑器打开。

.NET 下第一次接触Redis数据库

.NET 下第一次接触Redis数据库

4)在项目中引用

.NET 下第一次接触Redis数据库

如果想使用Redis数据库,需要在项目中添加如上的四个引用。

OK,准备工作到此,全部完成。我们开始使用的demo。

使用

1.相当于配置文件的类。

public class RedisManager

    {

         //注意,这个属性的写法是 { get; private set; }  外部不可写入。

        public static PooledRedisClientManager  ClientManager { get; private set; }

        static RedisManager()

        {

            RedisClientManagerConfig redisConfig = new RedisClientManagerConfig();

            redisConfig.MaxWritePoolSize = 128;

            redisConfig.MaxReadPoolSize = 128;

            /*读写分离。多台Redis组成集群

             注意前两个参数,参数1表示,读写Redis的服务器地址,为字符串数组,支持多个地址,也就是支持集群。

             参数2表示,读Redis的服务器,同样支持集群。

            */

            ClientManager = new PooledRedisClientManager(new string[] {"127.0.0.1"},

           new string[] {"127.0.0.1"}, redisConfig);

        }

    }

2.保存和读取

   static void Main(string[] args)

   {

            using (IRedisClient client = RedisManager.ClientManager.GetClient())

            {

                //1.设置读取int对象

                client.Set<int>("age",18);  

                 client.Get<int>("age");

                //2.设置读取sting对象

                client.Set<string>("name","jim");

                string name = client.Get<string>("name");

                //3.设置读取Dictionary对象

                Dictionary<string, string> dict = new Dictionary<string, string>();

                dict.Add("aaa", "bbb");

                client.Set<Dictionary<string, string>>("dict",dict);

                client.Get<Dictionary<string,string>>(dict);

                //4.赋值时,设置失效时间。

                client.Set<string>("name", "rupeng", DateTime.Now.AddSeconds(30))

            }

   }