Redis学习1-Redis简介和安装


  

1 NoSQL

1.1 什么是 NoSQL

NoSQL = Not Only SQL(不仅仅是 SQL) ,也解释为 non-relational(非关系型数据库)。在 NoSQL 数据库中数据之间是无联系的,无关系的。数据的结构是松散的,可变的。

1.2 为什么使用NoSQL

关系型数据库的瓶颈:
  1)无法应对每秒上万次的读写请求,无法处理大量集中的高并发操作。关系型数据的是 IO 密集的应用。硬盘 IO 也变为性能瓶颈
  2)无法简单地通过增加硬件、服务节点来提高系统性能。数据整个存储在一个数据库中的。 多个服务器没有很好的解决办法,来复制这些数据。
  3)关系型数据库大多是收费的,对硬件的要求较高。软件和硬件的成本花费比重较大

1.3 NoSQL的优势

(1) 大数据量,高性能
  NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益 于它的无关系性,数据库的结构简单。关系型数据库(例如 MySQL)使用查询缓存。这种 查询缓存在更新数据后,缓存就是失效了。在频繁的数据读写交互应用中。 缓存的性能不 高。NoSQL 的缓存性能要高的多。

(2) 灵活的数据模型
  NoSQL 无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就 是一个噩梦。尤其在快速变化的市场环境中,用户的需求总是在不断变化的

(3) 高可用
 &emspNoSQL 在不太影响性能的情况,就可以方便的实现高可用的架构。 NoSQL 能很好的解决关系型数据库扩展性差的问题。弥补了关系数据(比如 MySQL) 在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。 MySQL 和 NoSQL 都有各自的特点和使用的应用场景,两者结合使用。让关系数据库 关注在关系上,NoSQL 关注在存储上。

(4) 低成本
 &emsp这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的 License 成本

1.4 NoSQL 的劣势

  (1) 不支持标准的 SQL,没有公认的 NoSQL 标准
  (2) 没有关系型数据库的约束,大多数也没有索引的概念
  (3) 没有事务,不能依靠事务实现 ACID.
  (4) 没有丰富的数据类型(数值,日期,字符,二进制,大文本等)

2 Redis 安装和使用

2.1 Redis 介绍

  Remote Dictionary Server(Redis) 是一个开源的使用 ANSI C 语言编写、支持网络、可基于 内存亦可持久化的 Key-Value 数据库. Key 字符类型,其值(value)可以是 字符串(String), 哈 希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型,每种数据类型有自己的专属 命令。所以它通常也被称为数据结构服务器。

  Redis 的作者是 Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。目 前供职于 Pivotal 公司(Pivotal 是 Spring 框架的开发团队) ,Salvatore Sanfilippo 被称为 Redis 之父

官网:https://redis.io
中文:http://www.redis.cn/

Redis的历史:
  2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统 LLOOGG,然而没过多久该公司的创始人Salvatore Sanfilippo便开始对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是 Redis。

  不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品,而是希望让更多的 人使用它,于是在同一年Salvatore Sanfilippo将Redis开源发布,并开始和Redis的另一名主要 的代码贡献者Pieter Noordhuis一起继续着Redis的开发,直到今天。

  Salvatore Sanfilippo自己也没有想到,短短的几年时间,Redis就拥有了庞大的用户群体。 2012年数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、知 乎,国外如GitHub、Stack Overflow、Flickr、暴雪和Instagram,都是Redis的用户。

  VMware公司从2010年开始赞助Redis的开发,Salvatore Sanfilippo和Pieter Noordhuis也分 别于同年的3月和5月加入VMware,全职开发Redis。 Redis的代码托管在GitHub上https://github.com/antirez/redis,开发十分活跃,代码量只 有3万多行。

2.2 Window 上安装 Redis

  Windows版本的 Redis是 Microsoft 的开源部门提供的Redis. 这个版本的 Redis 适合开发 人员学习使用,生产环境中使用 Linux 系统上的 Redis .

  官网:https://redis.io/
  windows版本:https://github.com/MSOpenTech/redis/releases

2.3 Linux 上安装 Redis

1、解压

tar -zxvf redis-3.2.9.tar.gz  -C /usr/local/

2、编译
在解压后的Redis目录下执行make命令

cd /usr/local/redis-3.2.9
注意事项:
1)make 命令执行过程中可能报错,根据控制台输出的错误信息进行解决 
2)错误一:gcc 命令找不到,是由于没有安装 gcc 导致    
	解决方式:安装 gcc 编译器后在执行 make 命令     
	什么是 gcc ?  
	gcc 是 GNU compiler collection 的缩写,它是 Linux 下一个编译器集合( 相当于 javac ), 是 c 或 c++程序的编译器。 
 
   怎么安装gcc ? 
    使用yum进行安装gcc 。执行命令:yum -y install gcc
3)错误二: error: jemalloc/jemalloc.h: No such file or directory 
	解决方式:执行 make MALLOC=libc 
 
如果编译出现问题重新编译:
重新再编译 make 。
注意:安装完 gcc 之后,再执行 make,先执行 make distclean 清理一 下上次 make 后产生的文件。 

在make执行之后再执行 make install,该操作则将 src下的许多可执行文件复制到 /usr/local/bin 目录下,这样做可以在任意目录执行redis的软件的命令(例如启动,停止,客 户端连接服务器等), make install 可以不用执行,看个人习惯。 查看make编译结果,cd src目录
在这里插入图片描述
也可以指定安装位置,安装好的文件只有bin目录

make PREFIX=/usr/local/redis install

3、启动Redis

启动方式:
① 前台启动 ./redis-server
② 后台启动 ./redis-server &

3 Redis远程客户端

3.1 下载

Redis Desktop Manager:C++ 编写,响应迅速,性能好。官网地址:
https://redisdesktop.com

3.2 使用

使用客户端连接Linux的Redis:
连接Linux的Reids之前需要修改Redis服务器的配置信息。Redis服务器有安全保护措施,默认只有本机(安装Redis的那台机器)能够访问。配置信息存放在Redis安装目录下的redis.conf文件。修改此文件的两个设置。远程连接redis需要修改redis主目录下的redis.conf配置文件:
①、bind ip 绑定ip此行注释
②、protected-mode yes 保护模式改为no

################################## NETWORK #####################################

# By default, if no "bind" configuration directive is specified, Redis listens
# for connections from all the network interfaces available on the server.
# It is possible to listen to just one or multiple selected interfaces using
# the "bind" configuration directive, followed by one or more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
# internet, binding to all the interfaces is dangerous and will expose the
# instance to everybody on the internet. So by default we uncomment the
# following bind directive, that will force Redis to listen only into
# the IPv4 lookback interface address (this means Redis will be able to
# accept connections only from clients running into the same computer it
# is running).
#
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1  --注释掉

# Protected mode is a layer of security protection, in order to avoid that
# Redis instances left open on the internet are accessed and exploited.
#
# When protected mode is on and if:
#
# 1) The server is not binding explicitly to a set of addresses using the
#    "bind" directive.
# 2) No password is configured.
#
# The server only accepts connections from clients connecting from the
# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain
# sockets.
#
# By default protected mode is enabled. You should disable it only if
# you are sure you want clients from other hosts to connect to Redis
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.
protected-mode yes --改为no

3.3 启动

使用redis.conf启动Redis修改配置文件后,需要使用配置文件重新启动Reids,默认不加载配置文件。先关闭已经启动的Redis ,使用以下命令启动Redis在Redis安装目录执行:

./redis-server ../redis.conf &

3.4 关闭Linux系统的防火墙

linux系统,命令行执行:

systemctl stop firewalld

3.5 Redis编程客户端

1.Jedisredis的Java编程客户端,Redis官方首选推荐使用Jedis,jedis是一个很小但很健全的redis的java客户端。通过Jedis可以像使用Redis命令行一样使用Redis。
  (1)、jedis完全兼容redis 2.8.x and 3.x.x
  (2)、Jedis源码:https://github.com/xetorthio/jedis
  (3)、api文档:http://xetorthio.github.io/jedis/
2.redis的其他编程语言客户端:C 、C++ 、C# 、Erlang、Lua 、Objective-C、Perl 、PHP 、Python 、Ruby、Scala 、Go等40多种语言都有连接redis的编程客户端

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值