redis
Posted Super-Code
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis相关的知识,希望对你有一定的参考价值。
Redis
什么是redis
1.Redis是远程的,有服务端和客户端,有自己的协议
2.Redis是基于内存的,数据和结构存贮在内存中,运行速度远远高于硬盘存贮型的mysql,比较吃内存的软件
3.Redis是非关系型数据库,关系型数据库在存贮之前必须定义好数据字典,后续的数据按照数据字典进行存贮。
补充:关系型数据库和非关系型数据库的区别
关系型数据库:
- 表和表、表和字段、数据和数据存在着关系
优点:
数据之间有关系,进行数据的增删改查的时候是非常方便的
关系型数据库是有事务操作的,保证数据的完整性和一致性。
缺点:
因为数据和数据是有关系的,底层是运行了大量的算法,大量算法会降低系统的效率,会降低性能
面对海量数据的增删改查的时候会显的无能为力
海量数据对数据进行维护变得非常的无力
关系型数据库适合处理一般量级的数据(银行转账和钱)
非关系型数据库
为了处理海量数据,非关系数据库设计之初就是为了替代关系型数据库的关系
优点:
1.海量数据的增删改查是可以的
2.海量数据的维护和处理非常轻松
缺点:
1.数据和数据没有关系,他们之间就是单独存在的,不能保持一致性
2.非关系数据库没有关系,没有强大的事务关系,没有保证数据的完整性和安全性
适合处理海量数据,保证效率,不一定安全(统计数据,例如微博数据)
关系型数据库不利于数据的分散,不得不把数据存贮在同一个服务器内。非关系型数据库原本就不支持join处理,各个数据都是独立的,很容易把数据分散在多个服务器上,故减少了每个服务器上的数据量,即使要处理大量数据的写入,也变得更加容易,数据的读入操作当然也同样容易。
Redis特点
Redis有些特殊,临时性和永久性兼具。Redis首先把数据保存在内存中,在满足特定条件(默认是 15分钟一次以上,5分钟内10个以上,1分钟内10000个以上的键发生变更)的时候将数据写入到硬盘中,这样既确保了内存中数据的处理速度,又可以通过写入硬盘来保证数据的永久性,这种类型的数据库特别适合处理数组类型的数据。总结来说:
。同时在内存和硬盘上保存数据
。可以进行非常快速的保存和读取处理
。保存在硬盘上的数据不会消失(可以恢复)
。适合于处理数组类型的数据
redis应用场景
- 缓存
基于redis的高性能,通常把redis当做缓存来使用。 - 队列
redis中提供了一个list接口,提供了pop、push操作,redis保证了其原子性。基于这个功能,可以将redis当做队列来使用。 - 数据存储
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命令
- $ 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 之间的关系:
以上是关于redis的主要内容,如果未能解决你的问题,请参考以下文章