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 之间的关系:

原文地址:https://www.cnblogs.com/LTEF/p/9728986.html