1.安装

1.1 Window下安装

redis-server.exe redis.windows.conf
redis-cli.exe -h 127.0.0.1 -p 6379

1.2 mac下 安装

brew install redis
brew services start redis
redis-server /usr/local/etc/redis.conf

1.3 配置

ONFIG GET CONFIG_SETTING_NAME
CONFIG GET port

2.启动和停止Reids

本节将分别介绍开发环境和生产环境中运行Redis的方法以及正确停止Redis的步骤。

在这之前首先需要了解Redis包含的可执行文件有哪些,如下图:

我们最常使用的两个程序是redis-server和redis-cli,其中redis-server是Reids的服务器,启动Redis即运行redis-server;而redis-cli是Redis自带的Redis命令行客户端,是学习Redis的重要工具。

2.1 启动Redis

启动Redis有直接启动和通过初始化脚本启动两种方式,分别适用于开发环境和生产环境。

2.1.1 直接启动

直接运行redis-server即可启动Redis。

$ redis-server

Redis服务器默认会使用6379端口,通过--port参数可以自定义端口号。

$ redis-server --port 6380

2.1.2 停止Reids

考虑到Redis有可能正在将内存中的数据同步到硬盘中,强行终止 Redis 进程可能会导致数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:

$ redis-cli SHUTDOWN

当Redis收到SHUTDOWN命令后,会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出。

另一种方法是使用‘kill Redis 进程的PID’也可以正常结束Reids。

3. Redis命令行客户端

3.1 发送命令

redis-cli执行时会自动按照默认配置(服务器地址为127.0.0.1,端口号为6379)连接Reids.通过-h和-p参数可以自定义地址和端口号:

redis-cli -h 127.0.0.1 -p 6379

Redis提供了 PING 命令来测试客户端与Redis的连接是否正常,如果正常会收到回复 PONG,如:

$ redis-cli PING
PONG

第二种方式时不附带参数运行 redis-cli,这样会进入交互模式,可以自由输入命令,例如:

$ redis-cli
redis 127.0.0.1:6379>PING
PONG
redis 127.0.0.1:6379>ECHO hi
"hi"

这种方式在要输出多条命令时比较方便,也是本书中主要采用的方式。

3.2 命令返回值

命令的返回值有5种类型,对于每种类型redis-cli的展现结果都不同。

1.状态回复

状态回复(status reply)是最简单的一种回复,比如向Redis发送SET命令设置某个键的值时,Redis会回复状态OK表示设置成功。另外之前演示的对PING 命令的回复PONG也是状态回复。状态回复直接显示状态信息,例如:

redis 127.0.0.1:6379>PING
PONG

2.错误回复

当出现命令不存在或命令格式有错误等情况时Redis会返回错误回复(error reply)。错误回复以(error)开头,并在后面跟上错误信息。如执行一个不存在的命令:

redis 127.0.0.1:6379>ERRORCOMMEND
(error) ERR unknown command 'ERRORCOMMEND'

3.整数回复Redis虽然没有整数类型,但是却提供了一些用于整数操作的命令,如地增值的 INCR 命令会以整数形式返回递增后的键值。除此之外,一些其他命令会返回整数,如可以获取当前数据库中键的数量的 DBSIZE 命令等。整数回复(integer reply)以(integer)开头,并在后面跟上整数数据:

redis 127.0.0.1:6379>INCR foo
(integer) 1

4.字符串回复 字符串回复(bulk reply)是最常见的一种回复类型,当请求一个字符串类型键的键值或一个其他类型键中的某个元素时就会得到一个字符串回复。字符串回复以双引号包裹:

 redis 127.0.0.1:6379>GET foo
"1"

特殊情况是当请求的键值不存在时会得到一个空结果,显示为(nil).如:

 redis 127.0.0.1:6379>GET noexists
(nil)

5.多行字符串回复

多行字符串回复(multi-bulk reply) 同样很常见,如当请求一个非字符类型键的元素列表时就会收到多行字符串回复。多行字符串回复中的每行字符串都以一个序号开头,如:

 redis 127.0.0.1:6379>KEYS *
1) "bar"
2) "foo"

4. 多数据库

Redis是一个字典解构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。

每个数据库对外都是一个从0开始的递增数字命名,Redis默认支持16个数据库,可以通过配置参数 databases 来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT 命令更换数据库,如要选择 1 号数据库:

 redis 127.0.0.1:6379>SELECT 1
OK
redis 127.0.0.1:6379[1]> GET foo
(nil)

1.首先Redis不支持自定义数据库的名字,每个数据库都以编号命名,开发者必须自己记录哪些数据库存储了哪些数据。

2.Redis也不支持为每个数据库设置不同的访问密码。所以一个客户端要么可以访问全部数据库要么连一个数据库也没有权限访问。

3.多个数据之间并不是完全隔离的,比如 FLUSHALL 命令可以清空一个 Redis实例中所有数据库中的数据。

综上所述,这些数据库更像是一种命名空间,而不适宜存储不同应用程序的数据。

比如,可以使用0号数据库存储某个应用生产环境中的数据,使用1号数据库存储测试环境中的数据。

由于Redis非常轻量级,一个空Redis实例占用的内存只有1MB左右,所以不用担心多个Redis实例会额外占用很多内存。

Redis 入门之基础的更多相关文章

  1. windows下使用redis,Redis入门使用,Redis基础命令

    windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...

  2. Redis入门指南

    随着互联网业务对性能需求日益强烈,作为Key/Value存储的Redis具有数据类型丰富和性能表现优异的特点.如果能够熟练地驾驭它,不管是把它用做缓存还是存储,对很多大型应用都很多帮助.新浪作为世界上 ...

  3. spring redis入门

    小二,上菜!!! 1. 虚拟机上安装redis服务 下载tar包,wget http://download.redis.io/releases/redis-2.8.19.tar.gz. 解压缩,tar ...

  4. Redis入门教程(二)

    推荐阅读: Redis入门教程(一)https://www.cnblogs.com/jichi/p/10285346.html 5. Redis 的数据结构 5.1 Redis 数据结构介绍 redi ...

  5. Redis入门指南之三(入门)

    本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...

  6. Redis入门及主从配置

    1.Redis入门简介 Redis是一个开源的使用ANSI C语音编写.支持网络.可基于内存亦可持久化的日志型,Key-Value数据库.支持存储的value类型包括 string(字符串).list ...

  7. 超强、超详细Redis入门教程【转】

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  8. 超强、超详细Redis入门教程

    (1)什么是redis? Redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Key-Value类型的 ...

  9. Redis(二):Redis入门介绍

    Redis入门介绍目录导航: 入门概述 VMWare + VMTools千里之行始于足下 Redis的安装 Redis启动后杂项基础知识讲解 入门概述 是什么 Redis:REmote DIction ...

随机推荐

  1. json-lib使用——JSONObject与JSONArray

    ps:看这篇博客之前首先要引入工具包json-lib-2.2.2-jdk15.jar 资源链接:百度云:链接:https://pan.baidu.com/s/1o9k7PSu 密码:00lj 一.从O ...

  2. Python---战机小游戏,学习pygame

    import pygame # 导入游戏包 pygame.init() # 导入并初始化所有pygame模块,使用其他模块之前必须先调用init()方法 print('下面是游戏代码:') # 绘制矩 ...

  3. 三种数据库访问——原生JDBC

    原生的JDBC编程主要分一下几个步骤: (原生的JDBC编程指,仅应用java.sql包下的接口和数据库驱动类编程,而不借助任何框架) 1. 加载JDBC驱动程序: 2. 负责管理JDBC驱动程序的类 ...

  4. springcloud-Feign基础使用

    声明式REST客户端:Feign Feign是一个声明式的Web服务客户端.它使得Web服务客户端的写入更加方便.具有可插拔注解支持,包括Feign注解和JAX-RS注解. Spring Cloud增 ...

  5. 【解决】 无法打开包括文件:“windows.h”: No such file or directory

    vs编译时错误: 无法打开包括文件:“windows.h”: No such file or directory 出现这种错误什么都不用配置(环境变量),最好办法是将VS安装在C盘,让开发工具自动包含 ...

  6. videojs IE8无法播放解决方案

    1.如果是在.cs文件里初始化视频元素,没有遇到无法播放问题. 2.如果是js动态换播放器的poster和src遇到此问题,解决办法是用videojs提供的函数来设置 https://github.c ...

  7. MSSQL存储过程实现拼接sql的注意点

    这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改.由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面. 这里就出现了一个问题,我花费 ...

  8. ECLIPSE控制台信息导出

    JAVA代码: String fileAddress = Config.get_storeServiceLogsAsTextFile(); //获取信息的存放位置 //将控制台的信息保存到特定的文件中 ...

  9. 【转】MyBatis接口的简单实现原理

    MyBatis接口的简单实现原理 用过MyBatis3的人可能会觉得为什么MyBatis的Mapper接口没有实现类,但是可以直接用? 那是因为MyBatis使用Java动态代理实现的接口. 这里仅仅 ...

  10. 【原】Shiro框架基础搭建[2]

    简介: 关于搭建一个最基础的shiro网上的例子有很多,这里是记录一下自己尝试去看官方文档所搭建的一个小demo,项目采用的是原始的java静态工程,导入相关jar包后就能运行. 首先进入官网http ...