Redis安装及应用

... 3

一、      什么是NOSQL数据库|KV服务器... 3

1       数据库种类... 3

1.1          关系型数据库... 3

1.2      NoSQL数据库... 3

二、      Redis简介... 3

1       版本问题... 3

2       应用问题... 3

2.1          为什么设计独立的访问方式?. 4

3       官方网站... 4

三、      Redis单机版安装及本地应用... 4

1       上传资料... 4

2       预置环境准备... 4

3       解压缩... 4

3.1      redis.conf 4

3.2      src. 5

4       编译... 5

5       安装... 5

6       配置... 5

6.1          复制配置文件模板... 5

6.2          编辑配置文件... 6

7       软件管理... 7

7.1          启动... 7

7.2          停止... 8

7.3          重启... 8

8       应用 - 本地访问... 8

8.1          本地连接... 8

8.2          数据类型... 8

8.3          访问命令... 9

四、      Redis集群安装及本地应用... 14

1       什么是集群... 14

1.1          集群 cluster 14

1.2          cloud. 14

2       Redis集群的结构和算法... 14

2.1          结构... 14

2.2          容错... 15

2.3          算法... 16

3       安装集群... 16

3.1          本地集群结构介绍... 16

3.2          安装ruby. 16

3.3          准备6redis实例... 17

4       集群访问... 21

4.1          其他命令... 22

五、      redis客户端访问... 22

1       桌面客户端... 22

2       Java客户端 - jedis. 22

3       测试Jedis. 22

3.1          测试单机版Jedis. 22

3.2          测试集群版Jedis. 23

3.3          测试Spring整合Jedis访问单机版或集群版... 24

3.4      spring整合jedis+连接池... 27



一、        什么是NOSQL数据库|KV服务器

1         数据库种类

1.1      关系型数据库

Oracle, MySQL,SQL Server

在数据库中,保存的数据,之间有直接或间接关系的.

直接 : 表中的字段,对主键的描述. 称为直接关系.

间接 : 其他表,对当前表主键的描述, 称为间接关系.

1.2      NoSQL数据库

Redis, MangoDB

not only sql - 不仅仅是SQL访问的数据库. 非关系型数据库.

在数据库中保存的数据之间没有间接关系. 只有直接关系.

常见的数据保存方式是键值对. 通过value描述key.

非关系型数据库.常使用内存做数据的存储单元. 高效,快速.所以也可以称为KV服务器.

不是用来替代关系型数据库的.

任何的NoSQL数据库,都不能保证100%的数据持久.

功能 : 提高互联网工程中的响应效率的.

二、        Redis简介

是一个NoSQL数据库的典型代表.

在内存中保存数据的KV服务器.

1         版本问题

里程碑 - 3.0+版本

Redis3.0+版本,Redis中比较优秀的里程碑版本. 3.0+版本,redis支持集群.

 

商业&测试(开发) - 奇偶数

所有的奇数版本,都是测试版本. 所有的偶数版本,都是商业版本.

奇偶数指的是版本号最后一位.

2         应用问题

NoSQL数据库. no only sql.

通常来说,都会定义一套独立的访问语法. 访问语法,每个NoSQL数据库应用未必相同.

2.1      为什么设计独立的访问方式?

KV服务器. 高速缓存. 存储, 检索, 执行效率都要高.

存储 - 内存.

检索 - 算法+数据结构, : hash算法+(散列表)

执行 - 设计访问命令, 依托操作系统预编译. 形成可运行的机器码命令文件. 在访问服务器的时候, 直接通过命令访问. 减少编译, 翻译, 解释过程. NoSQL数据库几乎没有解压缩的绿色版本. 都是需要在操作系统中安装的版本. : Linux中的源文件, 编译再安装. Windows中的安装包, exe文件.

 

3         官方网站

http://redis.io

最高版本 : 4.0.2

当前学习版本 : 3.0.0

三、        Redis单机版安装及本地应用

1         上传资料

上传资料目录中的redis-x.x.x.tar.gz压缩包.

2         预置环境准备

redis是使用C语言开发的应用软件.

redis提供的是源代码信息. 需要在操作系统Linux中先安装GCC编译器. 再安装redis.

安装gcc : yum install -y gcc-c++

3         解压缩

tar -zxf redis-3.0.0.tar.gz

解压后, 是一个源代码和实例文件的目录结构. 后续的编译和安装. 必须在解压后的源代码目录中运行.

解压后的文件:

3.1      redis.conf

redis应用提供的一个默认的配置文件模板.

redis应用的配置文件, 没有命名和保存位置的限制.

配置文件只要求是文本文件.

3.2      src

redis的源代码库. 都是C语言开发的源代码.

4         编译

redis的目录中,执行命令make.

redis-3.0.0/ - make

5         安装

redis的目录中执行命令make install

执行命令的时候, 可以传递安装参数. PREFIX, 代表安装的位置.

make install PREFIX=/usr/local/redis

redis应用安装的指定目录 /usr/local/redis.

安装后, redis只有一个目录, bin. 代表可执行文件.

redis应用的所有功能都是和操作系统紧密相关的. 很多的内容都是借助操作系统完成的. redis的安装是纯净的. 不会在其他的目录中有任何redis相关的内容.

6         配置

6.1      复制配置文件模板

cp /root/upload/redis-3.0.0/redis.conf /usr/local/redis

6.2      编辑配置文件

vi /usr/local/redis/redis.conf

配置文件重要内容:

# 是否为精灵进程, 默认是非精灵进程启动. 修改为yes即可.

daemonize yes

 

# 端口号. 默认为6379. 可以配置

port 6379

 

# redis中的schema数量. 就是数据库的数量.redis中也有库的概念

# redis中的库没有命令. 只有编号, 0开始. 到数据库数量-1结束.

# 默认redis提供16个库.

databases 16

 

#   In the example below the behaviour will be   to save:

#   after 900 sec (15 min) if at least 1 key   changed

#   after 300 sec (5 min) if at least 10 keys   changed

#   after 60 sec if at least 10000 keys   changed

#   Note: you can disable saving completely by   commenting out all "save" lines.

#   It is also possible to remove all the   previously configured save

#   points by adding a save directive with a   single empty string argument

#   like in the following example:

#   save ""

# 持久数据的规则. RDB持久规则. 存储数据的文件是dump.rdb

save 900 1

save 300 10

save 60 10000

 

# RDB持久数据的文件命名.

dbfilename   dump.rdb

 

# 是否启用append of file持久化方式.默认关闭.

# 每秒持久一次数据. 以追加的方式,持久到数据文件.

appendonly no

 

# aof持久方式的文件名称.

appendfilename   "appendonly.aof"

 

7         软件管理

7.1      启动

启动redis的时候, 会自动检索启动命令所在目录中有没有redis数据文件. 如果有则加载数据. 如果没有,启动一个空的redis服务. 建议启动redis的时候,在固定的位置启动. 避免数据的丢失.

7.1.1        前端启动

/usr/local/redis/bin/redis-server          

前端启动. 启动后,会占用一个终端(控制台). 如果在终端中执行ctrl+c命令. redis应用关闭.

7.1.2        精灵启动 , 后端启动

精灵 - daemonize, 精灵进程|守护进程. 代表是一个系统中的服务进程.

必须为redis提供一个配置文件. 配置文件模板可以参考redis官方提供的源文件目录中的redis.conf文件.

编写好配置文件后. 通过redis-server命令,启动redis应用,在启动的同时,需要加载配置文件内容.

命令位置: /usr/local/redis

配置文件: /usr/local/redis/redis.conf

命令 : bin/redis-server redis.conf

命令后直接追加配置文件名称和路径. 默认使用相对于命令执行的目录开始寻址.也可以使用绝对路径地址提供配置文件路径及命名. : bin/redis-server /usr/local/redis/redis.conf

7.2      停止

7.2.1        前端启动应用 - 关闭

ctrl+c

自动保存RDB数据. redis database数据.

保存的文件, 默认为dump.rdb文件. 保存位置是启动redis应用的命令执行位置.

: 执行redis启动的位置是 - /usr/local/redis

数据文件,就保存在/usr/local/redis目录中.

7.2.2        精灵启动应用 - 关闭

/usr/local/redis/bin/redis-cli shutdown

关闭redis应用. 默认关闭的是本机,6379端口下的redis应用.

bin/redis-cli -h ip -p port shutdown

7.3      重启

先关闭再启动.

8         应用 - 本地访问

8.1      本地连接

8.1.1        连接到服务器

/usr/local/redis/bin/redis-cli [-h ip -p port]

默认连接当前电脑中的6379端口. 访问redis应用.

8.1.2        断开连接

quit

exit

ctrl+c

8.1.3        测试连接有效性

ping - 发送数据信息到redis应用. 应用返回PONG

echo - 回声, echo 数据发送到服务器. redis返回相同的数据.

8.2      数据类型

redis中保存的数据,都是key-value键值对形式的.

redis中保存数据的value部分,可以是多种数据结构的.

redis中保存的数据value, 主要由5中类型.

key数据,只能是字符串.

8.2.1        字符串

string类型, value部分是字符串.

底层存储数据都是byte数组. 在表现上是字符串.

逻辑上,可以保存任意数据.

字符串类型数据, value部分最多保存512M数据.不能保存大数据信息.

8.2.2        哈希

hash类型. value部分相当于一个Map.

value数据可以再次保存若干键值对.

redis中保存的数据就类似: Map<String, Map<String, String>>

8.2.3        链表

List. 有序的集合. 有存储顺序. 底层使用链表实现的.

可以一个key对应若干数据, 数据可重复.

类似: Map<String, List<String>>

8.2.4        集合

Set. 唯一数据集合. 底层使用Hash实现.

可以一个key对应若干数据, 数据不可重复.

类似: Map<String, Set<String>>

8.2.5        排序集合

zSet, sortedSet. 可排序的set

类似: Map<String, TreeSet<String>>

8.3      访问命令

8.3.1        通用命令
8.3.1.1  删除数据

del key…

删除命令是兼顾单一数据删除和批量数据删除的命令.可以传递大于一个参数. 代表要删除的key数据.返回删除的数据键值对数量.

del key1 key2 key3 ….

8.3.1.2  查询key数据

keys key或通配符

显示符合通配信息的key的名称.

keys a

keys *

keys a*

8.3.1.3  设置数据的有效期

redis中保存的数据,可以设置有效期. 在有效期满后,自动删除.

expire key seconds

key对应的数据,设置seconds秒数的有效时长.

8.3.1.4  查看数据的有效期

redis可以查看数据的有效时长.

特殊有效时长:

永久保存 : -1

无数据 : -2

有效时长 : 正数, 代表剩余有效秒数.

命令 : ttl key

8.3.1.5  删除有效时长

删除redis中数据的有效时长.

persist key

8.3.1.6  刷新数据库

flushdb

清空某编号数据库中的所有数据

清空当前选中的数据库数据.

8.3.1.7  刷新所有数据库

flushall

清空所有编号数据库中的数据

8.3.1.8  选择数据库

select num

选择某编号的数据库.

redis,连接redis应用后,默认使用编号为0的数据库, 可以通过select命令切换.

8.3.1.9  查看redis信息

info

查看redis的特征信息.

8.3.1.10           数据自增

自增自减数据,可以作为数据库主键的生成工具.

incr key

key对应的value自增1,并返回.

如果key对应的value不是数字.抛出错误.

如果key不存在, 返回1. 并保存新的key-value键值对.

8.3.1.11           数据自减

decr key

key对应的value自减1,并返回.

key对应的value不是数字.抛出错误.

key不存在, 返回-1, 并保存新的key-value键值对

8.3.1.12           自增对应步长的数据

incrby key step

key对应的value自增step数据. 并返回.

key对应的value不是数字.抛出错误

如果key不存在, 返回step. 并保存新的key-value键值对.

8.3.1.13           自减对应步长的数据

decrby key step

key对应的value自减step,并返回.

key对应的value不是数字.抛出错误.

key不存在, 返回-step, 并保存新的key-value键值对

8.3.1.14           数据浮点数自增自减

incrbyfloat key step

step可以是负数,即自减.

key对应的value自增step数据. 并返回.

key对应的value不是数字.抛出错误

如果key不存在, 返回step. 并保存新的key-value键值对.

8.3.1.15           检查key是否存在

exists key

检查key是否存在. 返回0,代表key不存在. 返回1,代表key存在.

8.3.2        字符串数据访问命令
8.3.2.1  单一新增

set key value

set命令要求必须传递两个字符串参数.

如果字符串参数之间有空格. 需要使用双引号,界定keyvalue

文章来源:

Author:芸诺
link:http://yuuuo.com/?id=40