.NET 中使用redis(三)

1,既然redis是存在内存中的,那如果查询数据是从服务器内存中读取出来速度是很快的,同时减轻了数据库的压力,尤其数据量很大是时候的查询!!

2,简答的思路是,redis在客户端和数据库之间,获取数据是从redis中获取!!

在这里插入图片描述

3,但是这样有个问题,数据库中和redis中的数据可能不同,一旦有数据新增,删除,修改那么就同样的查询条件在redis和数据中查询出来就是不同的。

方案1:一旦有数据新增,删除,修改,那么删除对应的key然后通过数查询后给到对应的key中,(这样操作比较大,适合大量数据批量操作)

方案2:一旦有数据新增,删除,修改,同步执行操作在redis 的数据,同时快速查询redis返回数据显示

4,小例子

public ActionResult Index()
        {
            1.连接redis 内存数据库(IP地址,redis的端口,密码)
            RedisClient redisClient = new RedisClient("127.0.0.1", 6379, "666");

            bool isUserKey = redisClient.ContainsKey("user");      //是否存在key 

            if (isUserKey ==

 false)  //redis中没有数据
            {
                textEntities contex = new textEntities();  //EF上下文对象

                List<Users> listUser = contex.Users.Where(p => p.uid > 10).ToList();  //获取 sql server中的数据

                redisClient.Set("us

er", listUser); //获取 sql server中的数据给到redis 中

                redisClient.Expire("us

er", 5);   //5秒钟后自动过期,过期之后 肯定是没有了 user 这个key 那么用户过5秒之后请求,则isUserKey==false

            }

            ViewBag.Commod = redisClient.Get<List<Users>>("user");  

            return View();
        }

//前端代码

@using testRedis;
@{
    ViewBag.Title = "Index";

    List<Users> comd = ViewBag.Commod;

}

<table>
    @foreach (Users item in comd)
    {    
        <tr role="row">
            <td>@item.uid</td>
            <td>@item.name</td>
            <td>@item.pwd</td>
            <td>@item.power</td>
        </tr>
    }
</table>

//删除,新增,修改等操作

   public ActionResult delete(int uid, string key)   //为了实现同步的效果,每次在数据在增加,修改,删除之后,删除对应的key,然后重新把值重新给定
        {
            1.连接redis 内存数据库(IP地址,redis的端口,密码)
            RedisClient redisClient = new RedisClient("127.0.0.1", 6379, "666");
        textEntities contex = new textEntities();

        contex.Users.Remove(new Users { uid = uid });

        int res = contex.SaveChanges();

        if (res > 0)  //修改成功啊,返回对应数据
        {
            List<Users> listUser = contex.Users.ToList(); //获取真实数据库中的对象集合
            if (redisClient.ContainsKey(key))
            {
                redisClient.Del(key); //删除对应的key,重新给key赋值
            }
            bool setOK = redisClient.Set(key, listUser);  //更新后的数据然后存在redis中
            ViewBag.Commod = redisClient.Get<List<Users>>(key);    //返回数据
        }
        return null;
    }

暂时写到这,方案二的思路也很简单,欢迎指点!!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值