• 一,前言

   相信大家即使没用过肯定都听说过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多,但是要下载半天
redis发展 redis谁开发的_数据库
下载之后,解压到对应路径,我解压到了G:\Redis,接下来我会以这个路径为准。

  • 2 Redis基本操作
    cd到解压目录,打开Redis服务端
    (这里redis.windows.conf的作用是,按照该配置文件的配置启动服务器)

    另外开一个cmd,同样cd到对应的目录,打开客户端服务器

    命令解析:
    Redis-cli.exe (客户端) -h (服务端ip地址) -p(服务端口)

String

二进制安全,可以包含任何数据,同时在数据交互的过程中,可以很好的对数据进行加密

基本操作,set和get 设置&取出

redis发展 redis谁开发的_数据库_02

Hash

键值对的集合,就好比是一个键(hash)中包含了多个键值对

一个hash可以存储2^32-1(40多亿个键值对)

正是这一特性,其存储数据是非常好的,通常用来存储数据

(同样是不区分大小)

hmset key key1 value1 key2 value2 key3 value3

redis发展 redis谁开发的_数据库_03


hgetall key 显示出该hash下的所有键值对

redis发展 redis谁开发的_redis发展_04

List

简单的字符串列表,我们可以选择插入顺序。

有序可重复,因为其有序,而且支持左右插入,所以通常会被用来作为消息队列

使用表存键值对

从左边插入数据

(后插入的数据在前面)

lpush key value

redis发展 redis谁开发的_Redis入门篇_05


需要注意的是:

List中的key不能和其他数据类型的key相同,否则会报错

(在同一个数据库中,没有表的概念)

(出现相同的key,会覆盖之前的值,但是list类型不能覆盖string,string可以覆盖list类型)

redis发展 redis谁开发的_数据库_06


从右边插入数据

(后插入的数据,在后面)

取出:

redis发展 redis谁开发的_权重_07

lrange 表名 因为是取数据,所以是从左往右取,最符合业务逻辑,无从右往左取数据,

语法: lrange 键 起始 终点

lrange key 0 3

从零开始取到3,共4个数

lrange key 0 -1

取出整个key的集合

redis发展 redis谁开发的_权重_08


Set

string类型的无序不重复,通过哈希表实现,又因为Hashtable采用的是数组+链表的形式,所以其添加,删除,查找的复杂度都是O(1)

可以利用该唯一性统计访问量

设置&取出

sadd key value1

sadd key value2

将value1和value2添加到该集合中去

同时下图中,222插入了两次,但是只执行了一次,这是因为set是有序的。

redis发展 redis谁开发的_权重_09


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的基础入门篇,后续会持续更新,由入门到熟练应用!