Redis学习笔记

一.NoSQL概述


1.什么是NoSQL

NoSQL = Not Only SQL,是非关系型的数据库,无需创建数据库字段就可以实现存储。

2.为什么需要NoSQL(优势)

A.高并发读写 

B.海量数据的高效率存储和访问  

C.数据库高可扩展性和高可用性

3.NoSQL数据库的四大分类

A.键值(key-value)存储

B.列存储

C.文档数据库

D.图形数据库

Redis学习笔记_第1张图片


二.Redis概述


1.什么是Redis

高性能键值对数据库,2008年在意大利出世,2009年开发完成并维护至今,读写速度惊人。

2.Redis应用场景

A.缓存 

B.任务队列(秒杀,抢购等)

C.网站访问统计

D.数据过期处理

E.应用排行榜

F.分布式集群架构中的session分离


三.Redis的安装


建议安装在Linux服务器上来运行测试

1.搭建环境

A.虚拟机版本:VMware  10.0.2

B.Linux系统:CentOS-6.5

C.SSH客户端:

远程命令端:SecureCRT 7.3  

ftp端:SecureFX 7.3


2.安装gcc环境

redis是C语言开发的,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要先安装gcc。

A.打开SecureCRT软件,连接Linux服务器地址
B.输入安装gcc的命令(必须连网):yum install gcc-c++

Redis学习笔记_第2张图片


提示是否安装时输入y即可

Redis学习笔记_第3张图片

出现以下内容表示安装gcc环境完成

Redis学习笔记_第4张图片


3.安装redis

A.将redis安装包上传到linux服务器

利用filezilla.exe软件将本地redis安装包直接拖到远程linux服务器root目录里面

Redis学习笔记_第5张图片

此时查看服务器根目录便可看到上传的文件


B.解压redis安装包后进行源代码编译

输入解压命令:tar -zxvf redis-3.0.7.tar.gz  ,这样在根目录下可看到解压后的文件


进入到redis-3.0.7目录后输入make命令进行编译


C.安装redis

在redis-3.0.7目录下输入安装命令:make PREFIX=/usr/local/redis install ,其中PREFIX=/usr/local/redis指定了redis的安装目录

Redis学习笔记_第6张图片

D.将redis安装包里的配置文件redis.conf拷贝到redis的安装目录里

在redis-3.0.7目录下输入拷贝命令:cp   redis.conf   /usr/local/redis

Redis学习笔记_第7张图片

E.启动redis

前端启动方式:在bin目录下输入命令 ./redis-server ,但这种方式必须按ctrl+c退出后才能进行其他命令操作,一般启动redis用后端启用方式。

后端启动方式:

输入命令vim  redis.conf后进入编辑模式,修改配置文件中的daemonize no 为daemonize yes后保存退出;

在安装目录下输入启动命令:./bin/redis-server ./redis.conf;

可输入命令ps -ef  | grep -i redis 来查找redis以便确认redis是否安装成功;


F.关闭redis

在bin目录下输入命令: ./redis-cli shutdown


四.jedis入门


我们可以用命令来向redis存入和获取数据,但实际开发中我们通常会用程序来向redis保存和获取数据,jedis是java首选的客户端开发包。

1.如何编写jedis程序呢

A.将jedis的jar包引入到项目中

Redis学习笔记_第8张图片

B.编写程序

单例的方式:

Redis学习笔记_第9张图片

连接池方式连接:

Redis学习笔记_第10张图片

Redis学习笔记_第11张图片


以上程序执行前都需要在linux服务器上设置打开6379端口才能连接到linux服务器:

在安装目录输入命令vim /etc/sysconfig/iptables 进入防火墙设置


加入以下设置


重启linux防火墙,输入命令:service iptables restart



五.Redis的数据结构


1.字符串(String)

A.特点

二进制安全的,存入和获取的数据相同

value最多可以容纳的数据长度为512M

B 存储String常用命令:

赋值  set  key  value


取值  get  key


删除  del    key

Redis学习笔记_第12张图片

数值递增 incr  key  ,当前key为空时会创建这个key,并且value加1;不为空时判断value是否为数字型,若不是递增则报错

Redis学习笔记_第13张图片

数值递减 decr  key



扩展命令

增加数值  incrby  key  value ,key不存在时创建这个key并且加上对应数值


减去数值 decrby  key  value 


拼接字符串  append  key  value



2.哈希(hash)

A.特点

String key 和 String  value 的map容器

每一个hash可以存储4294967295个键值对

B.常用命令:

赋值单个键值对  hset  key  key1  value1


赋值多个键值对  hmset  key  key1  value1  key2  value2 


取值单个键值对  hget   key   key1 


取值多个键值对  hget  key  key1  key2


取值全部键值对   hgetall  key


删除一个或多个 键值对  hdel  key  key1 key2

 

删除整个hash   del  key


增加数字   hincrby key key1 value



自学命令

判断属性是否存在  hexists  key  key1


获取属性个数  hlen  key


获取所有key   hkeys  key


获取所有值  hvals  key


3 .字符串列表(list)
4.字符串集合(set)
5.有序字符串集合(sorted  set)


六.redis的Keys的通用操作


1.获取所有key : keys *

Redis学习笔记_第14张图片

2.查找某些key : keys  xx?


3.删除某些key : del key1 key2 key3


4.判断key是否存在 : exists  key


5.key重命名 : rename key  newkey

Redis学习笔记_第15张图片

6.设置key过期时间:expire  key  time


7.查看key剩余超时时间: ttl  key


8.获取指定key的类型 : type key

Redis学习笔记_第16张图片


七.redis的事务


1.多数据库

A.客户端可指定连接哪个数据库(默认连接0号数据库):select   num


B.将一个数据库中的key移到另一个数据库:move key num

Redis学习笔记_第17张图片


2.提供事务的支持

在事务中所有命令将被串行化顺序执行,事务执行期间redis不会再为其他客户端提供任何服务,从而保证事务中的所有命令都被原子化执行,在redis中如果某个命令执行失败,后面的命令还会被执行。

在事务开启之前,如果客户端和服务器之间发生通讯故障并导致网络断开,那么这之后执行的语句都将不会被服务器执行;如果中断事件是发生在客户端执行语句之后,那么这个事务中的所有命令都将被服务器执行。

A.开启事务:multi

B.提交事务:exec

C.回滚事务:discard

Redis学习笔记_第18张图片


八.redis的持久化


1.为何要持久化

redis的高性能是由于它所有的数据都存储在内存中,为了使redis在重启之后仍然能保证数据不丢失,就需要将数据从内存当中同步到我们的硬盘上,这个过程就叫做持久化操作。


2.redis的持久化方式

A.RDB方式(默认):在指定的时间间隔内将内存中的数据集快照写入到磁盘。

优势:

a.整个redis数据库只包含一个文件,对文件备份非常方便,系统发生故障时很容易进行恢复 。

b.性能最大化,对于redis服务进程而言,在开始持久化时唯一需要做的只是分叉出一些进程,之后再由子进程完成持久化的工作,这样能最大化避免服务器进程执行IO操作。

c.相比AOF方式,如果数据集很大,RDB启动的效率会更高。

劣势:

a.因为是在指定时间间隔内更新数据,所以服务器宕机时容易丢失数据。

b.RDB由子进程完成持久化的工作,这样在数据集很大时可能会导致整个服务器停止几百毫秒甚至一秒钟。

配置redis.conf:

save  900 1  : 每900秒至少有1个key发生变化时往硬盘上写一次。

dbfilename  dump.rdb : 指定数据的文件名,即dump.rdb。

dir ./  : 文件保存的路径,./表示当前的配置文件同路径下。

Redis学习笔记_第19张图片

Redis学习笔记_第20张图片


B.AOF方式: 以日志的方式记录服务器所处理的每一个操作,在redis服务器启动之初会读取该文件来重新构建我们的数据库来保证启动后数据是完整的。

优势

a.更高的数据安全性,每次修改数据才同步到磁盘,效率低但最安全。

b.这种机制对于日志文件的写入操作采用append模式,因此在写入过程中服务器出现宕机的现象也不会破坏日志文件中已经存在的内容。

c.如果日志过大,redis可以自动启用重写机制,除了日志文件,还有一个文件用于记录哪些修改命令被执行,这样方便重写。

劣势:

a.对于相同数量的数据集而言,AOF文件要比RDB文件要大一些。

b.根据同步策略不同,AOF效率比RDB低。

配置redis.conf:

appendonly no :默认为no即不使用AOF方式,改为yes便可启用AOF方式。

appendfilename  "appendonly.aof" : 启用AOF方式后会产生一个名为appendonly.aof的文件。

同步策略:

appendfsync  always  每修改一次同步到磁盘上 (通常为了安全会选择这种)

appendfsync  eyerysec 每秒同步一次

appendfsync  no   不同步




C.无持久化:通过配置禁用服务器持久化功能,这种情况下redis就是一个缓存机制。

D.同时使用RDB和AOF。




你可能感兴趣的:(redis,数据库,nosql,java,缓存,IT,java)