zoukankan      html  css  js  c++  java
  • Redis入门

                                                     Redis介绍

    一.NoSQL数据库

    什么是redis?

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。Redis是一个非常快速的开源非关系、Key-Value数据库,通常称为数据结构服务器;它存储了五种不同类型值的键映射。

    (一)产生Redis 命令背景
        随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。包括web服务器CPU及内存压力,数据库服务器IO压力等。
        关于如何解决Web服务器的负载压力,其中最常用的一种方式就是使用nginx实现web集群的服务转发以及服务拆分等等。但是这样也会存在问题,后端服务器的多个tomcat之间如何解决session共享的问题,以及session存放的问题等等。

    为了解决session存放的问题,也有多种解决方案

    方案一:存放在cookie里面。不安全,否定

    方案二:存放在文件或者数据库当中。速度慢

    方案三:session复制。大量session冗余,节点浪费大

    方案四:使用NoSQL缓存数据库。例如redis或者memcache等,完美解决

    (二)NoSQL数据库简介
        NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

    1.NoSQL的适应场景

    对数据高并发的读写

    海量数据的读写

    对数据高可扩展性的

    速度够快,能够快速的存取数据

    2.NoSQL不适用场景

    需要事务支持

    基于sql的结构化查询存储,处理复杂的关系,需要即席查询(用户自定义查询条件的查询)。

    3.Nosql数据库的简介

    Memcache:基本上很少人用了。
    Redis:覆盖memcache的所有的功能,基本上替代了memcache,可以快速的存取数据,所有的数据都是在内存当中,存放数据量的大小,取决于内存大小。
    MongoDB:nosql数据库,数据主要是存储在内存当中,如果内存不够,数据可以落地到磁盘里面去,而且MongoDB支持sql语句的查询,是最像关系型数据库的非关系型数据库。
    Hbase:列式数据库存储,可以有上亿条数据,可以有上百万列等等都可以做到轻松的数据的查询,是大数据领域里面一个非常重要的非关系型数据库,原型是2006年Google发表BigTable论文。
    二.Redis基本介绍
    (一)Redis的特性
    高效性:Redis读取的速度是110000次/S,写的速度是81000次/S。
    原子性:对每一条数据操作要么成功,要么失败。
    支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)。
    稳定性:redis支持各种架构,主从复制,哨兵模式,redis集群。
    其他特性:支持过期时间,支持事务,消息订阅。
    (二)redis的适用场景
    获取最新的N个数据
    获取最新榜单的topN
    需要精确设置过期时间的应用 可对数据设置过期的时间,多长时间之后,数据就会自动删除掉
    计数器的应用:利用INCR,DECR命令来构建计数器系统,数据来一次就累加一次
    数据去重(Uniq操作):可以对数据进行去重操作
    实时系统:Pub/Sub系统可以构建实时的消息系统
    构建消息队列:你发送一个消息,我来接受这个消息即可
    构建队列系统:通过redis来构建先进先出的数据的队列
    数据缓存:将一些比较频繁使用的热数据 缓存到内存里面去
    三.Redis数据类型与命名
    (一)Redis中的数据类型
    string 字符串,类似于Java的字符串,同时支持数值类型的操作。
    list 列表类似于 ArrayList 。
    hash 类似于HashMap 类似于hash散列表,对应key,value对的数据类型。
    set 类似于hashSet 对数据进行去重,不会对数据进行排序操作。
    zset 类似于 linkedHashSet 对数据进行排序操作。

  • 相关阅读:
    阿里消息队列中间件 RocketMQ 源码分析 —— Message 拉取与消费(上)
    数据库中间件 ShardingJDBC 源码分析 —— SQL 解析(三)之查询SQL
    数据库分库分表中间件 ShardingJDBC 源码分析 —— SQL 解析(六)之删除SQL
    数据库分库分表中间件 ShardingJDBC 源码分析 —— SQL 解析(五)之更新SQL
    消息队列中间件 RocketMQ 源码分析 —— Message 存储
    源码圈 300 胖友的书单整理
    数据库分库分表中间件 ShardingJDBC 源码分析 —— SQL 路由(一)分库分表配置
    数据库分库分表中间件 ShardingJDBC 源码分析 —— SQL 解析(四)之插入SQL
    数据库分库分表中间件 ShardingJDBC 源码分析 —— SQL 路由(二)之分库分表路由
    C#中Math类的用法
  • 原文地址:https://www.cnblogs.com/BeotAt/p/12207555.html
Copyright © 2011-2022 走看看