redis概述1

作者: 云Shen不知处 | 来源:发表于2018-01-18 17:01 被阅读0次

1.redis简介

resis 是一个开源(BSD)许可的,内存中的数据结构存储系统,他可以用作数据库,缓存和消息中中间件。它支持多种类型的数据结构,如字符串(strings),散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial) 索引半径查询。Redis内置了复制(replication)、LUA脚本。LRU驱动事件,事务,和不同级别的磁盘持久化。Redis同样支持主从复制,并且第一次同步是快速的非阻塞式的同步。

2.redis的优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets
    及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败
    完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,
    通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

3.Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

4.什么是原子性,什么是原子性操作?

举个例子:

A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作

  1. 从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。
  2. 在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。
    如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电什么的,导致转帐事务意外终止了,而此时B的帐户里还没有增加1000块钱。那么,我们称这个操作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减1000块的状态,B的帐户的原来的状态。此时A的帐户仍然有3000块,B的帐户仍然有2000块。
    我们把这种要么一起成功(A帐户成功减少1000,同时B帐户成功增加1000),要么一起失败(A帐户回到原来状态,B帐户也回到原来状态)的操作叫原子性操作。
    如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性。

5.Redis安装

1.Window 下安装
[https://github.com/MSOpenTech/redis/releases]
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。

打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis 运行
 redis-server.exe redis.windows.conf 。

如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:


image.png

然后:打开新的命令行窗口,原来的不要关闭,尝试进行下面操作

设置键值对 set myKey abc
取出键值对 get myKey
C:\Users\Xingxing>redis-cli
127.0.0.1:6379> set mykey abc
OK
127.0.0.1:6379> get mykey
"abc"

2.linux -ubuntu下面安装

- 在 Ubuntu 系统安装 Redis 可以使用以下命令:
$sudo apt-get update
$sudo apt-get install redis-server
- 启动 Redis
$ redis-server
- 查看 redis 是否启动?
$ redis-cli
- 以上命令将打开以下终端:
redis 127.0.0.1:6379>
- 127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。
redis 127.0.0.1:6379> ping
PONG
以上说明我们已经成功安装了redis。

5.Redis 配置

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。
你可以通过 CONFIG 命令查看或设置配置项。
1.Redis CONFIG 命令格式如下:

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
实例
CONFIG GET loglevel
1) "loglevel"
2) "notice"
使用 * 号获取所有配置项
CONFIG GET *
编辑配置
你可以通过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置。
 CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"

参数说明

redis.conf 配置项说明如下:

1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程

    daemonize no

2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定

    pidfile /var/run/redis.pid

3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字

    port 6379

4. 绑定的主机地址

    bind 127.0.0.1

5.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

    timeout 300

6. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose

    loglevel verbose

7. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null

    logfile stdout

8. 设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id

    databases 16

9. 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合

    save <seconds> <changes>

    Redis默认配置文件中提供了三个条件:

    save 900 1

    save 300 10

    save 60 10000

    分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

 

10. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大

    rdbcompression yes

11. 指定本地数据库文件名,默认值为dump.rdb

    dbfilename dump.rdb

12. 指定本地数据库存放目录

    dir ./

13. 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

    slaveof <masterip> <masterport>

14. 当master服务设置了密码保护时,slav服务连接master的密码

    masterauth <master-password>

15. 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭

    requirepass foobared

16. 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息

    maxclients 128

17. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

    maxmemory <bytes>

18. 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

    appendonly no

19. 指定更新日志文件名,默认为appendonly.aof

     appendfilename appendonly.aof

20. 指定更新日志条件,共有3个可选值: 
    no:表示等操作系统进行数据缓存同步到磁盘(快) 
    always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全) 
    everysec:表示每秒同步一次(折衷,默认值)

    appendfsync everysec

 

相关文章

  • redis概述1

    1.redis简介 resis 是一个开源(BSD)许可的,内存中的数据结构存储系统,他可以用作数据库,缓存和消息...

  • redis 小结

    1 redis概述 1.1 什么是redis   Redis的全称是REmote Dictionary Serve...

  • Redis笔记

    一、Redis 概述 1、Redis介绍 Redis 是典型的 NoSQL 数据库。 redis官网:https:...

  • Redis|集群

    1. Redis集群 1.1 概述 Redis3.0以后推出Redis cluster集群方案。 1.2 Reid...

  • Redis单机版安装

    Redis版本:redis-5.0.4.tar.gz安装环境:CentOS 7.0 1、概述 Redis是一个基于...

  • Redis集群搭建以及Python操作集群

    强烈推荐redis书籍 <> 一. 概述. 1. 单机redis部署https://ww...

  • 2 Redis入门介绍

    2 Redis入门介绍 2.1 入门概述 2.1.1 1是什么 Redis:REmote DIctionary S...

  • 入门

    入门概述 1. redis是什么? Redis:REmote DIctionary Server(远程字典服务器)...

  • Java中高级核心知识全面解析——Redis(集群【概述{主从复

    一、[集群]入门实践教程 1.Redis 集群概述 1)Redis 主从复制 到目前为止,我们所学习的 Redis...

  • Redis指南-安装、五种类型命令

    Redis指南-安装、五种类型命令 1.Redis概述 1.Redis是开源的,用于构建高性能、可扩展web应用的...

网友评论

    本文标题:redis概述1

    本文链接:https://www.haomeiwen.com/subject/xoswoxtx.html