一、Redis简介

Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满足很多的应用场景,而且因为Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。除了上述功能以外,Redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。总之,如果在合适的场景使用好Redis,它就会像一把瑞士军刀一样所向披靡

二、redis特性:

1)、速度快

原因:1、数据存于内存中,2底层用C语言开发,效率较高,3、redis使用了单线程架构,没有多线程造成的竞争问题。

2)、基于键值对的数据结构服务器

redis中的值不仅是可以是字符串,还可以是具体的数据结构。主要提供了5中数据结构:

字符串、哈希、列表、集合、有序集合

3)、丰富的功能

.键过期功能,用于实现缓存

.发布订阅功能,用于实现消息系统

.支持lua脚本功能,可以利用lua创造出新的redis命令

.提供了简单的事物功能,能在一定程度上保证事物特性

.提供了流水线(Pipeline)功能,这样客户端能将一批命令一次性传到redis,减少了网络的开销。

4)、简单稳定

5)、客户端语言多

6)、持久化:RDB和AOF

7)、主从复制,实现了多个相同数据的redis副本。复制功能是分布式redis的基础。

8)、高可用和分布式

三、redis使用场景

1)、缓存(几乎所有的大型网站都用redis做缓存)

2)、排行榜系统

3)、计数器应用

4)、社交网络

5)、消息队列系统

四、redis的安装

1)下载Redis指定版本的源码压缩包到当前目录。

2)解压缩Redis源码压缩包。

3)建立一个redis目录的软连接,指向redis-3.0.7。(这样做是为了不把redis目录固定在指定版本上,有利于Redis未来版本升级,算是安装软件的一种好习惯。)

4)进入redis目录。

5)编译(编译之前确保操作系统已经安装gcc)。

6)安装。(安装是将Redis的相关运行文件放到/usr/local/bin/下,这样就可以在任意目录下执行Redis的命令)

$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar xzf redis-3.0.7.tar.gz
$ ln -s redis-3.0.7 redis
$ cd redis
$ make
$ make install

Redis安装之后,src和/usr/local/bin目录下多了几个以redis开头可执行文件,我们称之为Redis Shell:

redis-benchmark 性能测试工具

redis-check-aof aof日志文件检测工具(比如断电造成日志损坏,可以检测并修复)

redis-check-dump rdb快照文件检测工具,效果同上

redis-cli 客户端

redis-server 服务端

五、配置、启动、操作、关闭Redis

1、配置启动Redis

1)默认配置启动Redis

./redis-server

这种启动是前台直接运行,也就是说,执行完该命令后,如果Lunix关闭当前会话,则Redis服务也随即关闭

2)运行启动

redis-server加上要修改配置名和值(可以是多对),没有设置的配置将使用默认配置

# redis-server --port 6380

这种启动是前台直接运行

3)配置文件启动

将配置写到指定文件里,通过配置文件启动

./redis-server /home/etluser/redis/redis.conf

这种启动后台启动

2、Redis命令行客户端

1)交互式方式

通过redis-cli-h{host}-p{port}的方式连接到Redis服务,之后所有的操作都是通过交互的方式实现,不需要再执行redis-cli了

./redis-cli -h 127.0.0.1 -p 6379

2)命令方式

用redis-cli-h ip{host}-p{port}{command}就可以直接得到命令的返回结果

redis-cli -h 127.0.0.1 -p 6379 get hello

如果没有-h参数,那么默认连接127.0.0.1;如果没有-p,那么默认6379端口

3、停止Redis服务

Redis提供了shutdown命令来停止Redis服务

$ redis-cli shutdown

shutdown还有一个参数,代表是否在关闭Redis前,生成持久化文件:redis-cli shutdown nosave|save

参考资料:《Redis开发与运维》

Redis学习——简介的更多相关文章

  1. redis学习-简介

    1. Redis 简介 1.1 Redis是什么 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Red ...

  2. Redis学习笔记(1)——Redis简介

    一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...

  3. Redis数据类型简介(十分钟快速学习Redis)

    如何在ubuntu18.04上安装和保护redis 如何连接到Redis数据库 如何管理Redis数据库和Keys 如何在Redis中管理副本和客户端 如何在Redis中管理字符串 如何在Redis中 ...

  4. Redis学习手册(目录)

    为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...

  5. 分布式缓存技术redis学习系列(五)——redis实战(redis与spring整合,分布式锁实现)

    本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...

  6. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  7. Redis学习手册——转载

    转载出处:http://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html 为什么自己当初要选择Redis作为数据存储解决方案中 ...

  8. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  9. Redis学习手册

    为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...

随机推荐

  1. 工作流中的流程追溯!详细解析Activiti框架中的历史组件

    Activit中的历史简介 历史: Activiti中的一个组件,可以捕获发生在进程执行中的信息并永久的保存.与运行时数据不同的是,当流程实例运行完成之后它还会存在于数据库中 历史实体对象有5个: H ...

  2. Java SSM框架理论知识

    一.Spring理论知识 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心:1.IOC/DI(控制反转/依赖注入 ...

  3. vulhub-struts2-s2-007

    0x00 漏洞原理   当配置了验证规则 <ActionName>-validation.xml 时,若类型验证转换出错,后端默认会将用户提交的表单值通过字符串拼接,然后执行一次 OGNL ...

  4. selenium常用方法集合

    一.selenium定位元素的8种方法: 1.find_element_by_id() 2.find_element_by_name() 3.find_element_by_css() 4.find_ ...

  5. Java8 Lambda表达式、Optional类浅析

    1.概念 Lambda是一个匿名函数,可以将其理解为一段可以传递的代码(将代码像数据一样进行传递)可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格,使得java语言的表达能利得到了提升. 2. ...

  6. java并发编程JUC第九篇:CountDownLatch线程同步

    在之前的文章中已经为大家介绍了java并发编程的工具:BlockingQueue接口.ArrayBlockingQueue.DelayQueue.LinkedBlockingQueue.Priorit ...

  7. .NET Core/.NET5/.NET6 开源项目汇总1:常用必备组件

    系列目录     [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...

  8. 注册中心ZooKeeper,Eureka,Consul,Nacos对比

    简介 ​ 服务注册中心本质上是为了解耦服务提供者和服务消费者.对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的.更进一步,为了支持弹性扩缩容特性,一个微服务的提供者 ...

  9. 第8章:深入理解Service

    8.1 Service存在的意义 防止Pod失联(服务发现) 定义一组Pod的访问策略(负载均衡) 8.2 为什么要使用Service Kubernetes Pod`是平凡的,由`Deployment ...

  10. POJ 3087 Shuffle'm Up 模拟,看着不像搜索啊

    题意:给定s1,s1两副扑克,顺序从下到上.依次将s2,s1的扑克一张一张混合.例如s1,ABC; s2,DEF. 则第一次混合后为DAEBFC. 然后令前半段为s1, 后半段为s2. 如果可以变换成 ...