天天看点

Redis 概述、安装以及基本的增删改查操作

Redis 概述

1. Redis 以及常用网站

  • Redis 是一个开源的 Key-value 数据库。
  • 它又被经常认为是一个数据结构服务器,因为它的 value 不止只有 string (字符串) 类型,还包括:
    • list(列表)
    • set(集合)
    • zset(有序集合)
    • hash(哈希)
  • 这些数据类型支持:push、pop、add、remove、交集、并集、差集、排序等 丰富的操作,而且这些操作都是原子性的。在此基础上 Redis 还支持各种方式的排序。
  • 说到排序,需要了解队列和栈的操作
    • 队列是先进先出,1234的1先进1先出。打个比方,比如说一队人,在一个单人通过的小胡同里,第一个人进去也是第一个先走出胡同。
    • 栈是先进后出,1234的1先进4先出。相当于一队人通过一个胡同,第一个人走到底发现是一个死胡同,但是这一队人已经跟进来了,先进去的人堵在里面,想出来只能大家一起向后转,一个一个,最后一个人先出去。
  • 原子操作:
    • 将整个操作视作一个整体是原子性的核心特征
    • 可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分
    • 不会被线程调度机制打断的操作,一旦开始就一直运行到结束
  • Redis 与 Memcached 的异同
    • 都有自加、自减等命令。不过 Memcached 的 value 类型只包括 string 类型,远远没有 Redis 的 value 类型丰富。
    • 和 Memcached 一样,为了性能, Redis 的数据通常存放在内存中。存在内存中有优势又有劣势,优势是存取速度快。内存的速度大概是 5400转硬盘的 60-150 倍,是固态硬盘的 10-20 倍。快有快的优点,也有缺点。如果断电,数据会马上消失、无法进行复原。当然 Redis 可以每隔一段时间将内存中的数据写入磁盘,以防止数据的丢失。同时 Redis 也支持主从复制、以及简单的事务处理等。
  • Redis 常用的网站
    • Redis 官网:https://redis.io
    • Redis 中文官网:http://www.redis.cn
    • Redis 菜鸟教程:https://www.runoob.com/redis/

2. NoSQL 和 SQL 的异同

  • 什么是 NoSQL、SQL
    • SQL 就是关系型数据库。举例说明:MySQL、SQL Server 等。
    • NoSQL 就是 Not Only SQL,指的是非关系型数据库。常见的有:MongoDB、Redis、CouchDB。
  • NoSQL、SQL异同
    • 存储方式:在 SQL 中,数据是存在特定结构的表中。而 NoSQL 的存储方式更加的灵活,可以存在 json 文档中、哈希表中、或其他的方式。
    • 数据关系:在 SQL 中,必须先定义好表和字段结构才能添加数据。而在 NoSQL 中,数据可以在任何时候、任何地方添加。不需要预先定义。
    • 外部存储数据:在 SQL 中,如果要增加关联外部数据的话,一般是在原表中增加一个外键关联外部数据,而在 NoSQL 中,一般是把数据直接放在原数据集中,以提高查询的效率。
    • JOIN 查询:在 SQL 中,可以使用正表连接的方式将多个关系表中的数据用一条简单的 JOIN 命令查询出来,NoSQL 暂未提供这样的查询方式对多个表中的数据集进行查询。
    • 事务处理:在 SQL 中,如果多张表同批次被更新,这种场景一般是通过事务更新进行实现的,也就是说其中一张表更新失败,其它表也不会更新成功。但是在 NoSQL 中没有事务这个概念,所有的数据集操作都是原子级别的。
    • 语法:由于 NoSQL 和 SQL 的区别,其查询方式、存储方式、数据结构等都不同,也就造成了他们的语法的不同。
  • NoSQL 的优势和缺点
    • 优势:1. 灵活的可扩展性。以前大多数通过购买大型的服务器来提高负载的方式进行扩展。由于数据可用性的增加,数据库正在迁往云端或者虚拟化的环境发展。通过购买大型服务器来提高负荷的方式逐渐被淘汰。现阶段大多数通过多台主机增加负载的方式来提高网站负载、经济优势不言而喻。
    • 2. 大数据的处理能力。过去几年通过数据的发展,数据的量和类型发生了翻天覆地的变化。需要存储的数据量发生了急剧的膨胀。为了满足数据量增长的需要,关系型数据库的容量也在增加,但是关系型数据库都有自己的上限。现在,大量的大数据正在充斥着,很多大型的网站都是通过 NoSQL 系统来处理完成大量增长的大数据。NoSQL 所能处理的数据量远远超过最大型关系型数据库所能处理的上限。
    • 3. 低廉的维护成本。SQL 的供应商在可管理性能方面做出了很大的改进。但是高昂的系统维护费用一直是他们收入的主要渠道之一。而 NoSQL 数据库一开始就为了降低管理方面的要求所设计的。从理论上来说,自动修复、数据分配、简单的数据模型、可以在数据管理和优化方面节省很多的费用。
    • 4. 数据存储的成本。NoSQL 数据库通常是使用廉价的商业服务器集群来管理膨胀的数据。而关系型数据库通常需要依靠昂贵的专业服务器和存储系统来做到这一点。使用 NoSQL 每 GB 的存储成本、每秒处理事务的成本都比使用关系型数据库的成本要少很多很多。
    • 5. 灵活的数据模型。对于大型的关系型数据库来说,变更管理是一件很令人头痛的事情,即使只对一个关系型数据库的模型做一个很小很小的改动,也需要十分小心的管理和维护。而 NoSQL 数据库在数据模型约束方面,就显得更加的宽松,这也让程序的迭代更加的快速灵活。但是也存在明显的约束和不良的条件,那就是无法维护数据的完整性。
    • 缺陷:1. 单产品的成熟度不够。关系型数据库已经发展可很长时间了。对于大多数关系型数据库来说,它们的代名词就是更加的稳定、功能更加的丰富。相比之下,NoSQL 数据库大多数都是实验版本,许多关键性的功能还有待实现。
    • 后续技术支持后劲不足。由于关系型数据库都是有商业背景的。而大多数的 NOSQL 数据库都是开源项目、也就是免费的。对于每个 NoSQL 数据库来说,通常会有一个或多个公司对它们提供支持。但是这些公司通常都是一些小型的创业公司,在支持的范围、资金和可行度方面和那些大型的商业公司无法相提并论。
    • 分析能力和商业智能化略显单薄。NoSQL 数据库已经实现了插入、读取、更新、删除等功能,但是对于中到大型企业来说,商业的智能化以及后期的数据挖掘一直是一个至关重要的无问题。而 NoSQL 数据库几乎没有什么专业的工具用来查询和分析,即便一个简单的查询,也需要操作者需要较高的编程技术。而对商业智能化软件的对接,NoSQL 几乎无法进行连接。
    • 高精尖专业人才缺乏。全世界数百万开发者他们对关系型数据库的概念、编程方式是很熟悉的。相反每一位 NoSQL 的开发者都处于学习当中。

3. Linux 环境下安装 Redis

  • 相关内容:Linux下安装Redis

4. Redis 数据库的增删改查操作

  • set

    key:设置数据
  • get

    key:查询数据
  • del

    key:删除数据
  • getset

    key:修改数据
  • exists

    key:验证是否存在
# 开启 Redis 服务端
/usr/local/redis/bin/redis-server  /usr/local/redis/etc/redis.conf
# 登入客户端
redis-cli -p 6379
# 输入密码(如果有的话)
auth asdf

# 命令演示
set name wdm		# 设置数据,返回 OK
get name			# 查询,返回 "wdm"
getset name www		# 修改操作,返回 "wdm"(注意:修改成功也是返回原来的值)
get name			# 查询,返回 "www"(说明上面用 getset 命令修改成功)
exists name			# 验证键值是否存在,返回 (integer) 1(如果返回 0 代表不存在,返回 1 代表存在)
exists keys			# 返回 	 (integer) 0
del name			# 删除键值(key 和 value 一并删除),返回(integer) 1,说明删除成功(返回 0 说明删除失败)

           
  • 更多相关: Redis数据类型及操作

继续阅读