• Redis的汇总


     一 我们得知道为何会有Redis

    简单的一句话就是: 现在是大数据时代,一般的数据库(Mysql等关系型数据库)无法进行分析处理了。

    意识就是,使用数据库进行存 储数据,由于数据库持久化数据主要是面向磁盘的,但是磁盘的读/写比较慢。当遇到高并发下,往往需要瞬时的进行大量的读/写要求,这是极其容易让数据库宕机。

    从而,就引进了一种新的技术NoSQL技术(非关系型数据库),其实也是一种简单的数据库,主要是基于内存的数据库,也提供一定的持久化功能。

    而,Redis(KV键值对类型)和MongoDB(文档型数据库)是当前失眠上用的最为广泛的NoSQL。

    NoSQL= not onli sql (不仅仅时SQL),泛指非关系型数据库的。

    其实为何会有NoSQL的出现了,就是为了适应现在社会的 3V+3高

    3V是指

    • 海量 Volume
    • 多样Variety
    • 实时Velocity

    3高是指

    • 高并发
    • 高可扩 (随时水平拆分,机器不够了,可以扩展机器)
    • 高性能  (保证用户体验和产品的性能)

    二 Redis的优点

    1.运行速度快,因为是基于ANSIC语言编写的。

    2.读写速度快,因为是基于内存读写的,而不是磁盘。   -------------- Redis一秒可以写8万次,读取11万

    3数据结构较简单,因为只有6中数据类型


     三Redis能做什么

    ①内存存储、持久化,内存中是断电即失,所以持久化很重要(有两种,rdb,aof)

    ②效率高,用于告诉缓存

    ③发布订阅系统,也就是简单的消息队列系统

    ④地图信息分析

    ⑤计时器,计数器(浏览量)


    四  Redis一般是基于Linux使用的

    安装在了cd /usr/local/redis/bin

    redies的启动(后端模式):

      先进入:cd /usr/local/redis/bin

      再启动: ./redis-server redis.conf

      查看是否启动:ps -aux | grep redis

    启动客户端:

      先进入:cd /usr/local/redis/bin

      再启动:./redis-cli

     

    redis的停止:

      方法1:在Linux命令行下输入 ./redis-cli shutdown

      方法2:在Redis客户端里面输入shutdown

    性能测试

    ①100个并发连接 100000请求

      在linux开启redis后,输入

        redis-benchmark -h localhost -p 6379 -c 100 -n 100000

    结果分析:

     


    五  Redis的基本知识

    1. redis 默认有16个数据库,默认使用第0个数据库,可以使用select进行切换数据库: select 3 这样来切换到第几个数据库。
    2. 查看所有的key ----  key *
    3. 清除当前数据库直接输入 flushdb即可
    4. 清空所有数据库 flushAll
    5. redis是单线程的,是基于内存操作,cpu不是redis的性能瓶颈,redis的瓶颈是根据机器的内存和网络带宽
    6. 用一句话来概括Redis--- Redis是一种基于内存的,以键值存储来存储六种其数据类型的非关系数据库(NoSQL)的一种,并且提供了一定的持久化功能(rdb,aof),还支持一些事务,发布订阅消息模式,主从复制等功能

    问:为何Redis是单线程的,运行速度还是很快呢?

    这儿有两个误区:

      误区1:高性能的服务器一定是多线程的-❌

      误区2:多线程(CPU会上下切换), 所以会比单线程快-❌

    那为何Redis运行速度不慢呢,是因为Redis是将所有的数据全部存储在内存中的,所有说使用单线程去操作就是最快效率最高的,而多线程会cpu的切换,这是耗时操作!!!

    总结:对于内存系统来说,如果没有上下文切换效率就是最高的!多次读写都在一个cpi上,在内存情况下,这是最优方案。


    六 Redis 的五大数据类型

    可能会有人好奇了,为何上面说是六大数据类型,这儿却是五大呢,因为前五个用的较多。

    注意:这儿的数据类型指的是值的类型(Redis的数据是以键值形式存在的)

    这儿列出六个数据类型:String(字符串), List(列表),set(集合), hash(哈希结构), zset(有序集合), tHyperLogLog(基数)

     

    数据类型 数据类型存储的值 说明
    String(字符串) 可以保存字符串,整数,浮点数

    堆字符串进行操作,比如增加字符串或者求字串;

    如果是整数或者浮点数,可以实现计算,比如自增等

    List(列表) 它是一个链表,每一个节点都包含一个字符串

    Redis支持从链表的两端插入或者弹出节点,或者通过偏移对它进行剪裁;

    可以读取一个或多个节点;

    根据条件来删除或查找节点等

    set(集合) 是一个收集器,但是是无序的去重的,里面每一个元素都是一个字符串

    可以新增,读取,删除单个元素;

    检测一个元素是否在集合中;

    计算它和其它集合的交集,并集和差集等;

    随机从集合中读取元素

    hash(哈希结构) 类似于Map,是一个键值对形式的无序不去重(只要键不同)列表

    可以增删改查单个键值对,也可以

    获取所有的键值对

    zset(有序集合)

    是一个有序集合,可以包含字符串,整数,浮点数,分值

    各个值的排序是按照大小来决定的

    可以增删改查元素,根据分值的范围或者成员来获得对于的元素

    HyperLogLog(基数) 用来计算重复的值,以确定存储的数量 只提供基数的运算,不提供返回功能

     具体的Redis的六大类型的使用及其功能,请见另一个文章:

    基于Redis的六大数据类型-----在Spring中如何使用

    https://www.cnblogs.com/lanto/p/14255181.html

    一个Java开发的菜鸟
  • 相关阅读:
    【Gamma】Scrum Meeting 5
    【Gamma】Scrum Meeting 4
    【Gamma】Scrum Meeting 3
    团队贡献分汇总
    【Gamma】Scrum Meeting 2
    【Gamma】 Scrum Meeting 1
    Beta阶段测试报告
    From scipy.misc import imread 中 ImportError: cannot import name imread的解决方法
    【软件工程】结对项目
    【软件工程】第一次阅读作业
  • 原文地址:https://www.cnblogs.com/lanto/p/14254848.html
Copyright © 2020-2023  润新知