• redis基础


    Redis

    什么是redis

    1.Redis是远程的,有服务端和客户端,有自己的协议

    2.Redis是基于内存的,数据和结构存贮在内存中,运行速度远远高于硬盘存贮型的Mysql,比较吃内存的软件

    3.Redis是非关系型数据库,关系型数据库在存贮之前必须定义好数据字典,后续的数据按照数据字典进行存贮。

    补充:关系型数据库和非关系型数据库的区别

    关系型数据库:
    1. 表和表、表和字段、数据和数据存在着关系

    优点:

    1. 数据之间有关系,进行数据的增删改查的时候是非常方便的

    2. 关系型数据库是有事务操作的,保证数据的完整性和一致性。

    缺点:

    1. 因为数据和数据是有关系的,底层是运行了大量的算法,大量算法会降低系统的效率,会降低性能

    2. 面对海量数据的增删改查的时候会显的无能为力

    3. 海量数据对数据进行维护变得非常的无力

    关系型数据库适合处理一般量级的数据(银行转账和钱)

    非关系型数据库

    为了处理海量数据,非关系数据库设计之初就是为了替代关系型数据库的关系

    优点:

    1.海量数据的增删改查是可以的

    2.海量数据的维护和处理非常轻松

    缺点:

    1.数据和数据没有关系,他们之间就是单独存在的,不能保持一致性

    2.非关系数据库没有关系,没有强大的事务关系,没有保证数据的完整性和安全性

    适合处理海量数据,保证效率,不一定安全(统计数据,例如微博数据)

    关系型数据库不利于数据的分散,不得不把数据存贮在同一个服务器内。非关系型数据库原本就不支持join处理,各个数据都是独立的,很容易把数据分散在多个服务器上,故减少了每个服务器上的数据量,即使要处理大量数据的写入,也变得更加容易,数据的读入操作当然也同样容易。

    Redis特点

    Redis有些特殊,临时性和永久性兼具。Redis首先把数据保存在内存中,在满足特定条件(默认是 15分钟一次以上,5分钟内10个以上,1分钟内10000个以上的键发生变更)的时候将数据写入到硬盘中,这样既确保了内存中数据的处理速度,又可以通过写入硬盘来保证数据的永久性,这种类型的数据库特别适合处理数组类型的数据。总结来说:

    。同时在内存和硬盘上保存数据

    。可以进行非常快速的保存和读取处理

    。保存在硬盘上的数据不会消失(可以恢复)

    。适合于处理数组类型的数据

    redis应用场景

    1. 缓存
      基于redis的高性能,通常把redis当做缓存来使用。
    2. 队列
      redis中提供了一个list接口,提供了pop、push操作,redis保证了其原子性。基于这个功能,可以将redis当做队列来使用。
    3. 数据存储
      redis有硬盘持久化的机制,保证了数据的完整性和安全性。基于这个功能,可以将redis用做数据存储。

    redis五种数据类型

    String类型操作

    key -> value(string/int/float)

    list类型操作

    key -> value(12)    左

       value(13)     ^

       value(14)     |

       value(15)    右

    list类型是有序的可重复的,允许从value数列的左侧和右侧插入或弹出元素

    set类型操作

    key -> value(12)

       value(13)

       value(14)

       value(15)

    set类型是无序的、值有去重性

    hash类型

    key -> key1: value(string/int/float)

       key2: value(string/int/float)

       key3: value(string/int/float)

       key4: value(string/int/float)

    sort set类型

    有序分数型

    key score(10.1) value(string/int/float) rank:1

      score(9.1) value(string/int/float) rank:0

      score(11.1) value(string/int/float) rank:2

    redis命令

    1. $ redis-cli --> 打开本地redis服务
    • redis 127.0.0.1:6379> PING --> 检测redis是否启动成功

    • $ redis-cli -h host -p port -a password --> 开发远程redis服务

    • redis 127.0.0.1:6379> [COMMAND] [KEY_NAME] --> 键命令,COMMAND代表命令关键字,KEY_NAME代表key名

    HyperLogLog

    redis在2.8.9添加了HyperLogLog 结构

    HyperLogLog是用来做基数统计的算法,HyperLogLog的优点是,在输入元素的数量或体积非常大时,计算基数所需的空间总是固定的、并且是很小的。

    在redis里,每个HyperLogLog键只需要花费12KB内存,就可以计算接近2^64个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

    但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

    什么是基数?

    比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

    redis发布订阅

    Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

    Redis 客户端可以订阅任意数量的频道。

    下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

  • 相关阅读:
    Linux下OpenSSL自签ssl证书
    戌蛤怒触铁铁树
    Python自动化办公-自动化操作Excell-openpyxl
    Python正则表达式
    Django中F查询
    如何知道自家的宽带是多少兆?
    ‘Diango中明明模版的名称写的是对的,但是访问url的时候发现没调用模版’解决方案
    Django中的聚合函数
    Django中的跨关系查询
    【RabbitMQ】零、Windows64位安装
  • 原文地址:https://www.cnblogs.com/LTEF/p/9728986.html
Copyright © 2020-2023  润新知