- 一,前言
相信大家即使没用过肯定都听说过Redis这个数据库,但是还有很多人,一提起Redis,只知道是个用来做分布式,做缓存的数据库,对于其真正的原理和作用都没有一个很清晰的概念!
这篇文章的意义就是让大家可以通俗易懂的对该Redis有个清晰的认识,不仅仅是知道其可以用来干什么,更重要的是可以知道为什么可以用来做这,做那。一起来熟悉吧!
- 二,Redis起源发展
Redis是由意大利人antirez发明,此人早期是系统管理员,后来相继做了嵌入式开发工作,web,到了2007年和朋友一起创建了LLOOGG.com,也正是这个网站,才有了后来的Redis。当时antirez发现自己的网站存在很大的负载问题,于是两年之后,2009年,开发了Redis数据库。
- 三,Redis简介
一个完全开源免费的nosql数据库,是一个高性能的key-value数据库。
为什么说其是一个高性能的key-value数据库呢? 可以看下面的数据
测试 50个并发执行100000个请求
设置和获取的值是一个256字节字符串
结果读的速度是110000次/s,写的速度是81000次/s
而我们平常的关系型MySQL数据库
mysql 5.5 mysql 5.6 mysql 5.7 :默认的最大并发连接数都是151,上限为100000。
- 四,Redis安装&入门
上面了解了Redis的基本来源之后,接着我们就开正式开始Redis的学习吧!
在学的过程中,我会慢慢给大家讲解,Redis的功能对应的应用场景,从而可以更好的掌握Redis!
Redis的安装:
这里讲的是在window环境下的安装,相对Linux环境下的安装简单很多,比如在Linux环境下安装需要额外配置C++的语言环境等等,后续我也会出一个Linux下的安装教程
- 1 windows下载链接
https://github.com/MSOpenTech/redis/releases 因为使用的是国外的服务器,所以虽然整个只有5m多,但是要下载半天
下载之后,解压到对应路径,我解压到了G:\Redis,接下来我会以这个路径为准。
- 2 Redis基本操作
cd到解压目录,打开Redis服务端
(这里redis.windows.conf的作用是,按照该配置文件的配置启动服务器)
另外开一个cmd,同样cd到对应的目录,打开客户端服务器
命令解析:
Redis-cli.exe (客户端) -h (服务端ip地址) -p(服务端口)
String
二进制安全,可以包含任何数据,同时在数据交互的过程中,可以很好的对数据进行加密
基本操作,set和get 设置&取出
Hash
键值对的集合,就好比是一个键(hash)中包含了多个键值对
一个hash可以存储2^32-1(40多亿个键值对)
正是这一特性,其存储数据是非常好的,通常用来存储数据
(同样是不区分大小)
hmset key key1 value1 key2 value2 key3 value3
hgetall key 显示出该hash下的所有键值对
List
简单的字符串列表,我们可以选择插入顺序。
有序可重复,因为其有序,而且支持左右插入,所以通常会被用来作为消息队列
使用表存键值对
从左边插入数据
(后插入的数据在前面)
lpush key value
需要注意的是:
List中的key不能和其他数据类型的key相同,否则会报错
(在同一个数据库中,没有表的概念)
(出现相同的key,会覆盖之前的值,但是list类型不能覆盖string,string可以覆盖list类型)
从右边插入数据
(后插入的数据,在后面)
取出:
lrange 表名 因为是取数据,所以是从左往右取,最符合业务逻辑,无从右往左取数据,
语法: lrange 键 起始 终点
lrange key 0 3
从零开始取到3,共4个数
lrange key 0 -1
取出整个key的集合
Set
string类型的无序不重复,通过哈希表实现,又因为Hashtable采用的是数组+链表的形式,所以其添加,删除,查找的复杂度都是O(1)
可以利用该唯一性统计访问量
设置&取出
sadd key value1
sadd key value2
将value1和value2添加到该集合中去
同时下图中,222插入了两次,但是只执行了一次,这是因为set是有序的。
zset
和set关联就如其名字一样,代表有序的set,插入数据时和set一样,天然排序
zadd key score(权重) value
取值的方式却和list很像,正所谓是集合了list和set的优点于一身
取数据:
zrange key 范围 0 -1 (取出所有) withscores(显示对应的权重)
zadd不会重复且有序原理:
1依赖权重给元素排序
若出现重复的元素,那么会替换其权重score,重新进行排序,不会重复出现
2权重相同的情况下,后进在先
在权重相同的情况下,后面进行来的元素会紧接着在该元素的后面一位,后面的元素全部往后移动一位
List: lrange key 0 4 (下标起始点和下标终点)
zset:通过权重进行排序,
zrangebyscore key 0 100 将权重在0-100之内的数据取出
正是由于该有序不重复的特性,常用的使用场景:各种排行榜;带权重的消息队列
以上就是Redis的基础入门篇,后续会持续更新,由入门到熟练应用!