《从0学习Redis6》(一) --- 入门篇|8月更文挑战

448 阅读5分钟

Redis

Hello,大家好。我是派大星~
今天开始,会用十多个篇幅来从入门到精通讲解redis6

5c37e83687d8966417fccd4a032bf7b0.jpeg

关于NoSql

 NoSQL最常见的解释是non-relationalNot Only SQL也被很多人接受。

 NoSQL仅仅是一个概念,泛指 「非关系型」 的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。

 NoSql的出现不是为了代替传统关系型数据库,而是作为他们的补充

NoSQL有如下优点:

  1. 易扩展(数据之间无关系,这样就非常容易扩展)
  2. 高可用(可以方便地实现高可用的架构)
  3. 高并发、大数据下读写能力强(高性能)
  4. 灵活的数据模型(无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式)

NoSql分类

键值(Key-Value)存储数据库

 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果数据库管理员(DBA)只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。

列存储数据库

 这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

文档型数据库

 文档型数据库类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。

图形(Graph)数据库

 图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph。

不同分类特点对比

分类Examples举例典型应用场景数据模型优点缺点
键值(key-value)Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。Key 指向 Value 的键值对,通常用hash table来实现查找速度快数据无结构化,通常只被当作字符串或者二进制数据
列存储数据库Cassandra, HBase, Riak分布式的文件系统以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限
文档型数据库CouchDB, MongoDbWeb应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)Key-Value对应的键值对,Value为结构化数据数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构查询性能不高,而且缺乏统一的查询语法。
图形(Graph)数据库Neo4J, InfoGrid, Infinite Graph社交网络,推荐系统等。专注于构建关系图谱图结构利用图结构相关算法。比如最短路径寻址,N度关系查找等很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

Redis简介

 redis是一个C语言编写、支持网络、基于内存、可持久化的日志型、高性能的Key-Value数据库。

 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)

典型应用场景

  1. 缓存(热点数据缓存,例如报表、明星出轨、商品内容等)
  2. 分布式的session共享及分离
  3. 分布式锁
  4. 点赞、签到、打卡
  5. 排行榜
  6. 阅读量、点赞量等
  7. .......

Redis的下载、安装、文档

redis英文官网
redis中文官网
redis命令大全(redis.cn版本)
redis命令大全

因为redis6.0.7之前存在bug 所以使用6.0.8以后版本官方博客文档

redis安装包大全

linux命令下载(以6.0.8版本为例)

# 进入 opt目录
$ cd /opt
# 下载redis
$ wget https://download.redis.io/releases/redis-6.0.8.tar.gz
# 解压redis
$ tar -zxvf redis-6.0.8.tar.gz 
# 安装scl源
$ yum -y install centos-release-scl
# 安装新版gcc环境(低版本gcc无法编译redis6)
$ yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
#临时切换为新版本
$ scl enable devtoolset-9 bash

#注意:scl命令启用只是临时的,推出xshell或者重启或exit就会恢复到原来的gcc版本。
#如果要长期生效的话,执行如下: 
$ echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
# 编译
$ cd redis-6.0.8 
$ make
# 安装到指定目录
$ make install PREFIX=/opt/redis

redis的启动

redis的启动文件在 安装目录下的bin目录下 将redis的配置文件copy到工作目录
cp 解压目录/redis.conf /opt/redis/bin

启动redis

到安装目录文件夹下
cd bin/

更改配置文件
vi redis.conf
将 daemonize 改为 yes 后台启动

注释掉 bind 127.0.0.1
protected-mode 改为 no 可以远程访问

./redis-server redis.conf

查看redis是否启动

carbon.png

使用redis

进入redis客户端./redis-cli 连接上之后 如果是云服务器的话强烈建议 设置密码
config set requirepass 123456
也可以修改 redis.conf 的 #requirepass foobared

设置密码后需要密码才可操作
登录后 auth 123456
可以在登录时 ./redis-cli -a 123456