zoukankan      html  css  js  c++  java
  • Redis基础、应用、第三方支持组件总结

    这段时间一直在研究学习Redis的相关知识,现在大概做下总结吧
    首先,Redis的基础方面,不说配置,就单单说下Redis数据类型:
    Redis 五大数据类型有String 类型,Hash 类型,List 类型,Set 类型,Zset(Sortedset)类型。其中常用的是前三个。
    String 是 redis 最基本的类型,一个key对应一个value。

    hash 是一个键值对集合,和C# 的Dictionary 类似。
    Redis hash 是一个String 类型的 field 和 value 的映射表

    List 类型
    Redis列表是采用来链表来存储的简单字符串列表,按照插入顺序排序。添加元素一般从链表两端开始。一般消息队列的应用可以直接使用Redis的List数据类型来做处理。获取最新的10个用户的信息,在list链表中只保留最新的10个数据,每次进来一个新数据就删除一条旧数据,从而实现节约数据资源,减少服务器压力。

    Set 类型
    Redis 的 Set 是String类型的无序集合。它是通过HashTable实现实现的,用法和 List类型很相似。因为我们可以根据集合类型来做一些处理比如交并补集,具体应用场景:QQ好友的推荐

    Zset 类型
    Redis的zset(sortedset)和set一样也是string类型元素的集合,且不允许有重复的成员。由于是已序集合,可以应用到热门帖子的场景,排序好之后,返回最新的最热的前10个帖子。

    对redis的数据类型有足够的了解,可以应用到开发的很多场景,比如消息队列,优先队列,秒杀,最新博客的显示等等。

    .NET对Redis的支持还是很好的。一般我们用Redis来存储Session数据,微软给我们提供了一个第三方组件:RedisSessionStateProvider。微软官方还给我们提供了一个基于redis的内存输出缓存的组件:RedisOutputCacheProvider。所以的第三方redis组件一般都是基于Redis客户端实现的,一般是StackExchange.Redis或是其余的客户端。网上有很多人封装好了基于各个客户端的类,我们可以自己去了解。

    我一开始是使用RedisSessionStateProvider来存储Session的,其实也还是可以的。不过,后来改变了一种方式,我直接调用封装好的StackExchange.Redis类来做Session处理。

    // redis 分布式锁问题

    可以使用setnx分布式锁,但是有个致命的缺点,因此可以尝试使用set指令来解决该缺陷。使用set指令来做redis锁,传参分别是key, value, expiretime,nx。因为redis的操作是原子性的。

    源码地址:
    链接:https://pan.baidu.com/s/1uog3tYkX4wN4pYjryjA8NA 密码:jeqi

    参考资料:
    用redis来实现Session保存的一个简单Demo
    Redis 快速入门

    https://github.com/Azure/aspnet-redis-providers/tree/master/src

    【新手总结】在.Net项目中使用Redis作为缓存服务
    Session分布式共享 = Session + Redis + Nginx

  • 相关阅读:
    Java Native Method
    SQL语句优化
    Ibatis的环境搭建以及遇到的问题解决
    Java 构建器
    SpringMVC自定义视图 Excel视图和PDF视图
    java 枚举的常见使用方法
    mysql 根据某些字段之和排序
    MFC The Screen Flickers When The Image Zoomed
    How To Debug Qmake Pro File
    Gcc And MakeFile Level1
  • 原文地址:https://www.cnblogs.com/zhiyong-ITNote/p/9197384.html
Copyright © 2011-2022 走看看