1. Redis的特性

  (1) 存储结构

  Redis(Remote Dictionary Server,远程字典服务器)是以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。Redis支持的数据类型有字符串类型,散列类型,列表类型,集合类型,有序集合类型。

  常见的MySQL等存储结构可能会使用额外的表来连接两个表,查询时需将该额外的表进行连接,并不直观。而Redis可以将程序中的数据直接映射到Redis中,数据在Redis中 的存储形式和其在程序中存储方式很相似。Redis的另一优势是对不同的数据类型提供了非常方便的操作方式,如使用集合类型存储文章标签,Redis可以对标签进行如交集、并集这样的集合运算。

  (2) 内存存储与持久化

  Redis数据库中的所有数据都存储在内存中,在普通的笔记本中,可以一秒内读写超过十万个键值。Redis也提供了持久化的支持,即将内存中的数据异步写入到硬盘中,同时不影响继续提供服务。

  (3) 功能丰富

  Redis适用于缓存、队列系统,其可以为每个键设置生存时间(Time To Live, TTL),生存时间到期后键会自动被删除。作为缓存系统,Redis可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定规则自动淘汰不需要的键。

  Redis的列表类型键可以用来实现队列,并且支持阻塞式读取。更高层面上,Redis还支持"发布/订阅"模式,可基于此构建聊天室系统。

  (4) 简单稳定

  关系数据库中获取posts表内id为1的记录的title字段的值,其命令为:

  SELECT title FROM posts WHERE id = 1 LIMIT 1

  Redis中读取键名为post:1的散列类型键的title字段的值,其命令为:

  HGET post:1 title

  Redis提供了很多种不同编程语言的客户端库,这些库很好的封装了Redis的命令,使得在程序中与Redis进行交互变得更容易。有些库还提供了可以将编程语言中的数据类型直接以相应的形式存储到Redis中。

2. 安装Redis

  Redis约定版本号(小数点后的数字)为偶数的版本是稳定版,而为奇数的是非稳定版。

wget http://download.redis.io/redis-stable.tar.gz
tar -xzvf redis-stable.tar.gz
cd redis-stable
make // 编译
make install //将可执行程序复制到/usr/local/bin目录中

  (1) 启动和停止Redis

  make install将如下可执行程序复制到/usr/local/bin目录下,包括:

  1) redis-server:Redis服务器

  2) redis-cli:redis命令行客户

  3) redis-benchmark:redis性能测试工具

  4) redis-check-aof:AOG文件修复工具

  5) redis-check-dump:RDB文件检查工具

  启动redis的方式有两种:

  1) 直接启动:直接运行redis-server即可启动,Redis服务器会默认使用6379端口,通过--port参数可自定义端口号:

 redis-server --port 

  2) 通过初始化脚本启动

  适用于生产环境,Redis源码目录utils中初始化脚本redis_init_script,可通过如下步骤,配置Redis的运行方式和持久化文件、日志文件的存储位置等。

  ① 配置初始化脚本,先将初始化脚本复制到/etc/init.d目录中,文件名为redus_端口号,其中端口号表示让Redis监听的端口号,客户端通过该端口连接Redis,然后修改脚本第6行的REDISPORT变量的值为同样的端口号。

  ② 建立需要的文件夹,如存放Redis配置文件的/etc/redis和存放Redis持久化文件的/var/redis/端口号。

  ③ 修改配置文件,将配置模板redis.conf复制到/etc/redis目录中,以端口号命名,然后对以下参数进行编辑:

  使Redis以守护进行模式运行daemonize=yes;  设置Redis的PID文件位置pidfile=/var/run/redis_端口号

  设置Redis监听的'端口号port=端口号      设置持久化文件存放位置dir=/var/redis/端口号

  配置好后即可使用/etc/init.d/redis_端口号 start启动redis。

  3) 停止Redis

  强行终止Redis进程可能导致数据丢失,正确的方法为:redis-cli SHUTDOWN,Redis会先断开客户端连接,然后根据配置执行持久化,最后完成退出。

  也可以使用"kill Redis进程的PID"正常结束Redis。

3. Redis命令行客户端

  redis-cli(Redis Command Line Interface)

  (1) 发送命令

  发送命令的两种方式:① 将命令作为redis-cli的参数执行,如 连接Redisredis-cli -h 127.0.0.1 -port 6379; PING命令测试客户端与Redis的连接是否正常,正常则返回PONG.

  ② 不附带参数运行redis-cli,将进入交互模式。

  (2) 命令返回值

  1) 状态回复,如SET设置某个键的值时,Redis会回复状态OK表示设置成功。

  2) 错误回复,如命令出现不存在或命令格式有错误时会返回该类型,以ERR开头。

  3) 整数回复,如递增键值的INCR命令会以整数形式返回递增后的键值,或获取当前数据库中键的数量DBSIZE命令,以(integer)开头。

  4) 字符串回复,如请求一个字符串类型键的值GET。当请求的键值不存在时会得到一个空结果(nil)。

  5) 多行字符串回复,如请求一个非字符串类型键的元素列表KEYS *,每行都以序号开头。

  (3) 配置

  启用配置文件的方法:在启动时将配置文件的路径作为启动参数传递给redis-server,如:redis-server /path/to/redis.conf

  通过启动参数传递同名的配置选项会覆盖配置文件中相应的参数,如:redis-server /path/to/redis.conf --loglevel warning

  在Redis运行时通过CONFIG SET命令在不重启Redis情况下动态修改部分Redis配置,如:CONFIG SET loglevel waring

4. 多数据库

  Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。每个数据库对外都是以一个0开始的递增数字命名,Redis默认支持16个数据库,可通过配置参数databases修改。客户端与Redis建立连接后会自动选择0号数据库。

  但Redis不支持自定义数据库的名字,因此开发者必须自己记录哪些数据库存储了哪些数据,此外Redis不支持为每个数据库设置不同的密码,所以一个客户端要么可以访问全部数据库,要么连一个数据库也没有权限访问。更为重要的,多个数据库之间并不是完全隔离的,如FLUSHALL将清空一个Redis实例中的所有数据库。

  因此,不同的应用应该用不同的Redis实例存储数据,且不必担心多个Redis实例会额外占用很多内存。

    

Redis学习笔记(1) Redis介绍及基础的更多相关文章

  1. Redis学习笔记1-Redis的介绍和认识

    说明:文章内容来自百度百科和redis官方对redis的介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API ...

  2. redis学习笔记之redis简介

    redis简介 Redis是一个开源的,高性能的,基于键值对的缓存与存储系统,通过设置各种键值数据类型来适应不同场景下的缓存与存储需求.同事redis的诸多高层级功能使其可以胜任消息队列,任务队列等不 ...

  3. Redis学习笔记之Redis单机,伪集群,Sentinel主从复制的安装和配置

    0x00 Redis简介 Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server). Redis的键值 ...

  4. Redis学习笔记(4) Redis事务、生存时间及排序

    1. Redis事务 Redis中的事务(transaction)是一组命令的集合,一个事务中的命令要么都执行,要么都不执行.事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次 ...

  5. StackExchange.Redis学习笔记(一) Redis的使用初探

    Redis Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化. 与其它键值数据存储相比,Redis有一组相对丰富的数据类型. Redis可以将数据复制到任意数量的从机中 Redis的安装 官 ...

  6. Redis学习笔记(3) Redis基础类型及命令之二

    1. 集合类型 集合类型与列表类型有很多相似之处,但二者的区别在于:前者具有唯一性,但不具有有序性:后者具有有序性,但不具有唯一性.集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等, ...

  7. Redis学习笔记(2) Redis基础类型及命令之一

    1. 基础命令 (1) 获取符合规则的键名列表 格式为:KEYS pattern 其中pattern表示支持通配符 # 建立一个名为bar的键 > SET bar OK # 获取Redis所有键 ...

  8. redis学习笔记01 — 基本介绍、安装配置及常用命令

    redis--NoSQL的一种 为了解决高并发.高可用.高扩展.大数据存储等一系列问题而产生的数据库解决方案,就是NoSQL NoSQL,非关系型数据库,全名:Not Only Sql,它不能代替关系 ...

  9. Redis学习笔记之Redis中5种数据结构的使用场景介绍

    原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 redis 中一共有5种数据结构 ...

随机推荐

  1. zju3430

    题意:给出多个加密的模式串,和多个待匹配的串,问每个串里出现了多少种模式串.加密方法是把每3bytes加密成按6bits一个对应成4个字符,对应方法题里给了. 分析:除了解密之外,基本是个赤裸裸的AC ...

  2. Python自动化运维工具fabric的安装

    使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...

  3. 让最新官方编译的 ffmpeg 在 XP 上 跑起来

    下载 fix-ffmpeg-bin.7z , 解压到 ffmpeg 的 bin 目录下, 运行 fixff.cmd 即可. fix-ffmpeg-bin.7z FT ft[]={ {"_wf ...

  4. ffmpeg-20160714-git-bin.7z

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  5. WIZnet官方网盘

    之前使用过 WIZnet 的TCP/IP 解决方案,资源较少, 偶然发现此网盘,不敢独享,访问 请戳此处.

  6. Metro各种流转换

    Ibuffer转byte[] ,(int)buffer.Length); Byte[]转Ibuffer WindowsRuntimeBufferExtensions.AsBuffer(bytes,,b ...

  7. win7 ubuntu10.04双系统,重装win7后,修复双启动项

    进入ubuntu的liveCD(即在试用ubuntu里),在终端里操作 首先要找到自己的ubuntu系统挂载在那个sda下面.可以用sudo fdisk -l 这个命令.然后: 1. sudo -i ...

  8. java转换json需要导入的jar包,org/apache/commons/lang/exception/NestableRuntimeException

    缺少相应jar包都会有异常,根据异常找jar包导入......     这里我说下lang包,因为这个包我找了好半天:   我用的是: commons-lang3-3.1.jar  出现异常: jav ...

  9. 【leetcode】Compare Version Numbers(middle)

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

  10. sql语句按照汉字拼音首字母排序

    oracle : 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值SCHINESE_RADICAL_M 按照部首(第一顺序).笔划(第二顺序)排序SCHINESE_STR ...