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自学之-----FileInputStream类
    RandomAccessFile类的使用(随机读取java中的文件)
    JAVA File常用的API介绍
    Java中的编码
    java的装箱与拆箱
    java基础知识整理:
    java程序编写需注意的问题
    iPhone开机键坏了如何开机
    WKInterfaceTable实例化出现的一系列
    Office for Mac
  • 原文地址:https://www.cnblogs.com/zhiyong-ITNote/p/9197384.html
Copyright © 2011-2022 走看看