配置redis为自动启动的服务

  categories:资料  tags:,   author:

本文是讲述, 如何在centos6.x 系统下如何配置 redis为一个自动启动的服务的过程

在操作过程中 始终需要 root权限

一. Redis安装

redis-service-install-002

 

特别注意 redis的安装目录 如上图

  1. 下载redis 安装程序

wget http://download.redis.io/releases/redis-2.8.19.tar.gz

  1. 解压缩redis安装源代码

tar xzvf redis-2.8.19.tar.gz

cd redis-2.8.19/

  1. 安装redis

make PREFIX=/usr/local/redis install

一定要安装到特定目录中

  1. 拷贝redis配置文件到安装目录

cp   redis.conf    /usr/local/redis/

vi /usr/local/redis/redis.conf

 

二.安装Redis启动服务的辅助程序

  1. 下载

wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz

  1. 解压缩
阅读全文

srcache_nginx redis 构建缓存系统应用一例

  categories:nginx资料  tags:,   author:

redis是一种高效的key-value存储。srcache_nginx模块相关参数介绍,可以参见《memc_nginx+srcache_nginx+memcached构建透明的动态页面缓存》。

下面举一例应用,看配置:

upstream redis {
server 127.0.0.1:6380;
keepalive 512;
}server {
listen       80 backlog=1024 default;
server_name  www.ttlsa.com;
index index.html index.htm index.php;
root  /data/wwwroot/www.ttlsa.com/webroot;

location / {
set $flag 0;
if ($uri ~ /thumb/[0-9]+_160.jpg$){
set $flag “${flag}1″;
}
if ($arg_unitid =

阅读全文

Kafka+Spark Streaming+Redis实时计算整合实践

  categories:mq, 资料  tags:,   author:

基于Spark通用计算平台,可以很好地扩展各种计算类型的应用,尤其是Spark提供了内建的计算库支持,像Spark Streaming、Spark SQL、MLlib、GraphX,这些内建库都提供了高级抽象,可以用非常简洁的代码实现复杂的计算逻辑、这也得益于Scala编程语言的简洁性。这 里,我们基于1.3.0版本的Spark搭建了计算平台,实现基于Spark Streaming的实时计算。
我们的应用场景是分析用户使用手机App的行为,描述如下所示:

  • 手机客户端会收集用户的行为事件(我们以点击事件为例),将数据发送到数据服务器,我们假设这里直接进入到Kafka消息队列
  • 后端的实时服务会从Kafka消费数据,将数据读出来并进行实时分析,这里选择Spark Streaming,因为Spark Streaming提供了与Kafka整合的内置支持
  • 经过Spark Streaming实时计算程序分析,将结果写入Redis,可以实时获取用户的行为数据,并可以导出进行离线综合统计分析

Spark Streaming介绍

Spark Streaming提供了一个叫做DStream(Discretized Stream)的高级抽象,DStream表示一个持续不断输入的数据流,可以基于Kafka、TCP Socket、Flume等输入数据流创建。在内部,一个DStream实际上是由一个RDD序列组成的。Sparking Streaming是基于Spark平台的,也就继承了Spark平台的各种特性,如容错(Fault-tolerant)、可扩展 (Scalable)、高吞吐(High-throughput)等。
在Spark Streaming中,每个DStream包含了一个时间间隔之内的数据项的集合,我们可以理解为指定时间间隔之内的一个batch,每一个batch就 构成一个RDD数据集,所以DStream就是一个个batch的有序序列,时间是连续的,按照时间间隔将数据流分割成一个个离散的RDD数据集,如图所 示(来自官网):
spark-cluster-overview-streaming-dstream
我们都知道,Spark支持两种类型操作:Transformations和Actions。Transformation从一个已知的RDD数据集经过 转换得到一个新的RDD数据集,这些Transformation操作包括map、filter、flatMap、union、join等,而且 Transformation具有lazy的特性,调用这些操作并没有立刻执行对已知RDD数据集的计算操作,而是在调用了另一类型的Action操作才 会真正地执行。Action执行,会真正地对RDD数据集进行操作,返回一个计算结果给Driver程序,或者没有返回结果,如将计算结果数据进行持久 化,Action操作包括reduceByKey、count、foreach、collect等。关于Transformations和Actions 更详细内容,可以查看官网文档。
同样、Spark Streaming提供了类似Spark的两种操作类型,分别为Transformations和Output操作,它们的操作对象是DStream,作 用也和Spark类似:Transformation从一个已知的DStream经过转换得到一个新的DStream,而且Spark Streaming还额外增加了一类针对Window的操作,当然它也是Transformation,但是可以更灵活地控制DStream的大小(时间 间隔大小、数据元素个数),例如window(windowLength, slideInterval)、countByWindow(windowLength, slideInterval)、reduceByWindow(func, windowLength, slideInterval)等。Spark Streaming的Output操作允许我们将DStream数据输出到一个外部的存储系统,如数据库或文件系统等,执行Output操作类似执行 … 阅读全文

Memcached、Redis OR Tair

  categories:资料  tags:  author:

一、前言

非关系型数据库(NoSQL = Not Only SQL)的产品非常多,常见的有Memcached、Redis、MongoDB等优秀开源项目,相关概念和资料网上也非常丰富,不再重复描述,本文主要 引入Memcached和Redis与淘宝开源Tair分布式存储进行对比测试,由于各自适用场景不同,且每个产品的可配置参数繁多,涉及缓存策略、分布 算法、序列化方式、数据压缩技术、通信方式、并发、超时等诸多方面因素,都会对测试结果产生影响,单纯的性能对比存在非常多的局限性和不合理性,所以不能 作为任何评估依据,仅供参考,加深对各自产品的理解。以下是一些基本认识:

1、尽管 Memcached 和 Redis 都标识为Distribute,但从Server端本身而言它们并不提供分布式的解决方案,需要Client端实现一定的分布算法将数据存储到各个节点, 从而实现分布式存储,两者都提供了Replication功能(Master-Slave)保障可靠性。

2、Tair 则本身包含 Config Server 和 Data Server 采用一致性哈希算法分布数据存储,由ConfigSever来管理所有数据节点,理论上服务器端节点的维护对前端应用不会产生任何影响,同时数据能按指定 复制到不同的DataServer保障可靠性,从Cluster角度来看属于一个整体Solution,组件图参照上一篇博文( http://www.cnblogs.com/lengfo/p/4171655.html )。

基于此,本文设定了实验环境都使用同一台机器进行 Memcached、Redis 和 Tair 的单Server部署测试。

二、前置条件

1、虚拟机环境(OS :CentOS6.5,CPU:2 Core,Memory:4G)

2、软件环境

 Sever Client
MemcachedMemcached
阅读全文

redis使用与学习

  categories:原创  tags:  author:

redis是一个非常优秀的分布式缓存系统, 以前主要是用memcached做缓存, 后来有些数据需要在缓存中做排序等操作, memcached就不方便了。因此后来采用redis系统。

在没有采用redis系统前,快乐成长blog经常非常缓慢,每次用户请求都要用php进行解析处理, 因此效率最低下了。

为了解决php下调用redis问题, 查阅了redis的网站,然后搜索一下文章来检查php访问redis方法, 参考如下:

试用Redis安装、php环境连接、测试    介绍php中进行redis连接的一些资料

PHP-redis中文文档    php中访问redis的资料, 比较详细

Redis与phpredis的安装  php中访问redis的资料, 同前面类似

redis是如此好的一个分布式缓存, 非常值得好好学习一下,学习redis应该以实践为基础, 多写代码,多思考。 正常redis是运行在linux中,对我们日常学习和开发有些影响。 其实redis是可以在windows中运行的, 这个同windows中的nginx一样仅仅是用来做开发的。一般实际使用中,还是在linux中的。

      Windows下Redis的安装使用          通过这个资料可以找到redis的下载地址, 以及如何在windows中启动redis等

      windows xp下PHP中redis的使用  包括xp中使用php访问redis的一些资料,比较简单。

redis的原理等一些介绍,可以在下面一些资料中找到

Redis 起步   简单介绍redis

redis缓存技术学习   比较详细,全面的介绍了redis系统, 说的很明白

再有redis的高级特性, 包括分布式缓存,事物,内存等在下面有些资料, … 阅读全文

Windows下Redis的安装使用

  categories:资料  tags:  author:

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包 括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是 原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性 的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从…

0.前言

因为是初次使用,所以是在windows下进行安装和使用,参考了几篇博客,下面整理一下

1.安装Redis

官方网站:http://redis.io/

官方下载:http://redis.io/download 可以根据需要下载不同版本

windows版:https://github.com/MSOpenTech/redis

github的资源可以ZIP直接下载的(这个是给不知道的同学友情提示下)

下载完成后 可以右键解压到 某个硬盘下 比如D:\Redis\redis-2.6

在D:\Redis\redis-2.6\bin\release下 有两个zip包 一个32位一个64位

根据自己windows的位数 解压到D:\Redis\redis-2.6 根目录下

 

2.启动Redis

进入redis目录后 开启服务  (注意加上redis.conf)

redis-server.exe redis.conf


这个窗口要保持开启  关闭时redis服务会自动关闭

redis会自动保存数据到硬盘 所以图中是我第二次开启时 多了一个 DB

阅读全文

8种NoSQL数据库对比

  categories:mysql资料  tags:, ,   author:

来源:互联网

相关文章:

MongoDB基本操作指南
NoSQL数据库
MongoDB集群
MongoDB数据库
MongoDB备份与恢复
8种NoSQL数据库对比
配置mongodb分片群集(sharding cluster)
记一次MongoDB性能问题,附原理解析
mongodb之insert和save函数的区别
mongodb shell无法删除问题 与 secureCRT使用退格键出现^H解决办法
Mongodb源码分析之Mongos分析
PHP操作MongoDB

 

虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破。这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举。NoSQL: 是一项全新的数据库革命性运动,NoSQL的拥护者们提倡运用非关系型的数据存储。现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而 NoSQL致力于改变这一现状。目前Google的BigTable和Amazon的Dynamo使用的就是NoSQL型数据库。参见NoSQL词条。

image

但是NoSQL数据库之间的不同,远超过两SQL数据库之间的差别。这意味着软件架构师更应该在项目开始时就选择好一个适合的NoSQL数据库。针对这种情况,这里对Cassandra、Mongodb、CouchDB、Redis、Riak、Membase、Neo4j和HBase进行了比较:

1.CouchDB

  • 所用语言:Erlang
  • 特点:DB一致性,易于使用
  • 使用许可:Apache
  • 协议:HTTP/REST
  • 双向数据复制,
  • 持续进行或临时处理,
  • 处理时带冲突检查,
  • 因此,采用的是master-master复制(master-master复制:是一种数据库同步方法,允许数据在一组计算机之间共享数据,并且可以通过小组中任意成员在组内进行数据更新。)
  • MVCC-写操作不阻塞读操作
  • 可保存文件之前的版本
  • Crash-only(可靠的)设计
  • 需要不时地进行数据压缩
  • 视图:嵌入式映射/减少
  • 格式化视图:列表显示
  • 支持进行服务器端文档验证
  • 支持认证
阅读全文

PHP-redis中文文档

  categories:资料  tags:  author:

phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系

很有用;以下是redis官方提供的命令使用技巧:

下载地址如下:

https://github.com/owlient/phpredis(支持redis 2.0.4)
Redis::__construct构造函数
$redis = new Redis();

connect, open 链接redis服务
参数
host
: string,服务地址
port
: int,端口号
timeout
: float,链接时长 (可选, 默认为 0 ,不限链接时间)
注: 在redis.conf中也有时间,默认为300

pconnect, popen 不会主动关闭的链接
参考上面

setOption 设置redis模式

getOption 查看redis设置的模式

ping 查看连接状态

get

阅读全文

redis的内存陷阱

  categories:资料  tags:  author:

redis是个对内存依赖性很强的NoSql数据库,在内存足够的情况下性能出色

如果只有一台机子去部署redis,一定要特别小心。

比如我有台24G的服务器,理所当然我会将大量内存分配给redis。

比如20G的内存, 问题来了, 当你对redis插入数据后,redis会异步将数据dump到硬盘中

想起来很完美,问题是它会fork一个进程,并占去同样大小的内存,你需要的内存瞬间便为 20G+20G =40G

这时内存超过了物理内存的限制,马上会启动虚拟内存,我的机子上是8G虚拟内存,重点是这个是linux的虚拟内存,并不是redis自己的虚拟内存。

linux的虚拟内存 page很大,IO剧增,dump速度会非常慢,整个服务器的性能降到冰点,服务请求都会堵塞。最严重到机子坏掉。

对于单台机子最好是降低redis虚拟内存设置,page可以根据配置修改,这个虚拟内存比linux的虚拟内存好很多,因为page小很多。

如果你的redis既有读又有写,那么最好不要让redis占去大半的内存。

可以设置它的虚拟内存到8G,这还要根据你的key值大小的衡量,因为key是必须在内存中的,这样一来就算启用了虚拟内存,redis占去的实际内存也会超出设想。

天哪, 就是说必须给redis留出他本身需要一倍以上的内存,平时在不插入数据的时候,内存空着不用,浪费。

此外官方文档中建议对key小,value很大的数据设置虚拟内存。

另外master/slave不是很成熟,目前只支持主从,Redis在master是非阻塞模式,也就是说在slave执行数据同步的时候,master是可以接受客户端的请求的,并不影响同步数据的一致性,然而在slave端是阻塞模式的,slave在同步master数据时,并不能够响应客户端的查询

可以根据master/slave的特点,master不dump,它只负责写数据,让slave去dump… 阅读全文

Redis内存使用优化与存储

  categories:资料  tags:  author:

上一篇Redis文章对其适用场景与特点进行了一个概括的分析,本文将对Redis的常见数据类型的使用场景以及在内存优化方面和性能优化方面做一些详细的分析。

Redis常用数据类型

Redis最为常用的数据类型主要有以下五种:

  • String
  • Hash
  • List
  • Set
  • Sorted set

在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的:

首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:type 代表一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式,比如:type=string代表value存 储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串 的,当然前提是这个字符串本身可以用数值表示,比如:”123″ “456”这样的字符串。

这里需要特殊说明一下vm字段,只有打开了Redis的虚拟内存功能,此字段才会真正的分配内存,该功能默认是关闭状态的,该功能会在后面具体描 述。通过上图我们可以发现Redis使用redisObject来表示所有的key/value数据是比较浪费内存的,当然这些内存管理成本的付出主要也 是为了给Redis不同数据类型提供一个统一的管理接口,实际作者也提供了多种方法帮助我们尽量节省内存使用,我们随后会具体讨论。

下面我们先来逐一的分析下这五种数据类型的使用和内部实现方式:

  • String常用命令: set,get,decr,incr,mget 等。应用场景: String是最常用的一种数据类型,普通的key/value存储都可以归为此类,这里就不所做解释了。

    实现方式:

    String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。

  • Hash常用命令:hget,hset,hgetall 等。应用场景:我们简单举个实例来描述下Hash的应用场景,比如我们要存储一个用户信息对象数据,包含以下信息:

    用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2种存储方式:

    第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题。

    第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据,内存浪费还是非常可观的。

    那么Redis提供的Hash很好的解决了这个问题,Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口,如下图:

    也就是说,Key仍然是用户ID, value是一个Map,这个Map的key是成员的属性名,value是属性值,这样对数据的修改和存取都可以直接通过其内部Map的 Key(Redis里称内部Map的key为field),

阅读全文


快乐成长 每天进步一点点