jedis

linux 安装 redis

谁说我不能喝 提交于 2019-11-29 15:55:37
Redis Linux 安装 由于 Redis 并没有发布 windows 的官方版本,windows 的安装使用不作介绍,只介绍 Linux 下的安装使用。 下载地址: https://github.com/dmajkic/redis/downloads 下载最新版本 然后tar, make,即可。(make前,如果确认自己的测试机是32位linux,在src/Makefile文件中的头部加上 CFLAGS= -march=i686 redis 2.8.9 安装报错 Jimmy 2013 - 01 - 21 11 : 53 zmalloc.h: 50 : 31 : error: jemalloc/jemalloc.h: No such file or directory zmalloc.h: 55 : 2 : error: #error "Newer version of jemalloc required" make [ 1 ]: *** [adlist.o] Error 1 make [ 1 ]: Leaving directory `/data0/src/redis- 2.6 . 2 /src ' make : *** [all] Error 2 解决办法是: make MALLOC=libc zmalloc.h: 50 : 31 : fatal error:

Java尝试连接Sentinel时,抛出Could not get a resource from the pool异常

跟風遠走 提交于 2019-11-29 15:07:54
Java尝试连接Sentinel时,抛出Could not get a resource from the pool异常 问题描述 RedisUtil main 解决思路 总结 问题描述 前几天兴致冲冲的学习了哨兵模式,并且能够在阿里云上自己实现了redis-sentinel的一些功能,今天尝试去用java客户端去连接sentinel时发生了一系列意外,启动时便抛出了Could not get a resource from the pool这个异常。无奈去网上搜了一下,无非是bind端口没打开或是防火墙配置问题等,都跟自己的情况不一样。 废话少说,先上代码: RedisUtil package com . lamarsan . sentinel . util ; import redis . clients . jedis . * ; import redis . clients . jedis . exceptions . JedisConnectionException ; import java . util . HashSet ; import java . util . List ; import java . util . Map ; import java . util . Set ; import java . util . logging . Logger ;

NoSql和Redis

谁说胖子不能爱 提交于 2019-11-29 15:06:52
1.NoSQL a) 指一些非关系型的数据库.读写性能高,存储会有过期,数据存放于内存中 b) 分类 i. 键值数据库 ii. 列存储数据库 iii. 文档型数据库 redis和memcached是key-value的Nosql,主要用来做缓存的 2.Redis a) 高性能的开源的菲关系型数据库,数据保存在内存里面或者磁盘里面 b) Redis 是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,redis严格上不是一种数据库,应该是一种数据结构化存储方法的集合。数据结构:数组,list,set,map等redis提供了一下操作方法,我们使用这些方法就可以对存入字符串,组织成各种类型数据库结构(string,list,set,map等). c) Redis数据库的优势 i. 数据存储:存放在内存,还支持持久化.-存取速度快,并发能力强,数据安全性高 还支持集群(主从同步) (支持高并发,海量数据), 数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。 ii. 它支持的存储值的类型 String,list,set,sorted set,hash 支持集群(支持主从同步) 支持持久化 d) 使用场景 i. 缓存: 对于经常查询的数据,将其放到Redis里面

hadoop 多表join:Map side join及Reduce side join范例

与世无争的帅哥 提交于 2019-11-29 13:38:09
最近在准备抽取数据的工作。有一个id集合200多M,要从另一个500GB的数据集合中抽取出所有id集合中包含的数据集。id数据集合中每一个行就是一个id的字符串(Reduce side join要在每行的行尾加“,”号,而Map side join不必,如果加了也可以处理掉),类似,500GB的数据集合中每一行是某一id对应的全记录,用“,”号分隔。 为什么不在hive或者pig下面搞这个操作呢?主要是因为Hive配置了Kerberos认证之后,还有一个问题没有解决,包含metastore的主机无法从namenode主机获取票据,所以就暂时放一放吧。用MapReduce来搞吧。在Hive下比较方便,但在MapReduce中实现就比较麻烦。 1、概述 在传统数据库(如:MySql)中,JOIN操作常常是非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧。下面分别介绍MapReduce中的几种常见join,比如有最常见的 map side join,reduce side join,semi join(这些在Hive中都有) 等。Map side join在处理多个小表关联大表时非常有用,而 reduce join 在处理多表关联时是比较麻烦的,会造成大量的网络IO,效率低下,但在有些时候也是非常有用的

实时统计每天pv,uv的sparkStreaming结合redis结果存入mysql供前端展示

独自空忆成欢 提交于 2019-11-29 12:33:21
最近有个需求,实时统计pv,uv,结果按照date,hour,pv,uv来展示,按天统计,第二天重新统计,当然了实际还需要按照类型字段分类统计pv,uv,比如按照date,hour,pv,uv,type来展示。这里介绍最基本的pv,uv的展示。 id uv pv date hour 1 155599 306053 2018-07-27 18 关于什么是pv,uv,可以参见这篇博客: https://blog.csdn.net/petermsh/article/details/78652246 1、项目流程 日志数据从flume采集过来,落到hdfs供其它离线业务使用,也会sink到kafka,sparkStreaming从kafka拉数据过来,计算pv,uv,uv是用的redis的set集合去重,最后把结果写入mysql数据库,供前端展示使用。 2、具体过程 1)pv的计算 拉取数据有两种方式,基于received和direct方式,这里用direct直拉的方式,用的mapWithState算子保存状态,这个算子与updateStateByKey一样,并且性能更好。当然了实际中数据过来需要经过清洗,过滤,才能使用。 定义一个状态函数 // 实时流量状态更新函数 val mapFunction = (datehour:String, pv:Option[Long], state

Jedis 与 ShardedJedis 设计

情到浓时终转凉″ 提交于 2019-11-29 11:41:53
Jedis设计 Jedis作为推荐的java语言redis客户端,其抽象封装为三部分: 对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjectFactory,JedisFactory 面向用户的redis操作封装:BinaryJedisCommands,JedisCommands,BinaryJedis,Jedis 面向redis服务器的操作封装:Commands,Client,BinaryClient,Connection,Protocol 其类设计图如下: 关于common-pool的相关内容,可以参见: http://macrochen.iteye.com/blog/320077 其他类的设计作用如下: 类名 职责 Pool 抽象Jedis对象池操作;并委托给操作给GenericObjectPool JedisPool 实现Pool并提供JedisFactory工厂 JedisFactory 实现BasePoolableObjectFactory,提供创建,销毁Jedis方法 BinaryJedisCommands 抽象面向客户端操作的Redis命令;key,value都为序列化后的byte数组 JedisCommands 抽象面向客户端操作的Redis命令;提供String类型的key,value

Java实现Redis发布/订阅

ⅰ亾dé卋堺 提交于 2019-11-29 11:41:43
今天经理让我实现一个Redis发布/订阅功能,用来记录审计信息。我查了一天,才弄出来。总结如下,大神勿喷。 redis的发布/订阅模式是消息机制之一,另外一个叫生成者消费者模式。Redis发布订阅模式讲解可以参考菜鸟教程的这篇文章http://www.runoob.com/redis/redis-pub-sub.html。 1、Redis发布订阅模式客户端实现。在打开Redis服务器后,再打开两个客户端,客户端1用来接收消息,客户端2用来发布消息。 客户端1订阅bar频道。格式:SUBSCRIBE name1 name2。 成功订阅回复,分别对应订阅类型、订阅频道、订阅数量。 127.0.0.1:6379> SUBSCRIBE bar Reading messages... (press Ctrl-C to quit)1) "subscribe"2) "bar"3) (integer) 1 客户端2,发送消息。格式:publish channelName Message。 127.0.0.1:6379> publish bar val (integer) 1 客户端1订阅回复,分别对应消息类型,频道,消息。 "message"2) "bar"3) "val" 效果图如下: Redis支持模式匹配订阅,*为模糊匹配符。 订阅所有频道的消息 PSUBSCRIBE * 订阅以news

redis-JedisPoolConfig配置

蓝咒 提交于 2019-11-29 09:59:01
edisPoolConfig config = new JedisPoolConfig(); //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true config.setBlockWhenExhausted( true ); //设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数) config.setEvictionPolicyClassName( "org.apache.commons.pool2.impl.DefaultEvictionPolicy" ); //是否启用pool的jmx管理功能, 默认true config.setJmxEnabled( true ); //MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默 认为"pool", JMX不熟,具体不知道是干啥的...默认就好. config.setJmxNamePrefix( "pool" ); //是否启用后进先出, 默认true config.setLifo( true ); //最大空闲连接数, 默认8个 config.setMaxIdle( 8 );

Redis嵌入式服务器,用于Java集成测试

耗尽温柔 提交于 2019-11-29 09:40:26
Maven依赖 Maven Central: < 依赖 > < groupId > com.github.kstyrc </ groupId > < artifactId > embedded-redis </ artifactId > < version > 0.6 </ version > </ dependency > 以前的版本(0.6之前): < repository > < id > clojars.org </ id > < url > http://clojars.org/repo </ url > </ repository > ... < 依赖 > < groupId > redis.embedded </ groupId > < artifactId > embedded-redis </ artifactId > < version > 0.5 </ version > </ dependency > 用法 运行RedisServer非常简单: RedisServer redisServer = new RedisServer(6379); redisServer 。开始(); //做一些工作 redisServer 。停(); 您还可以为RedisServer提供自己的可执行文件: // 1)给出显式文件(os-independent broken!)

RedisRedis快速入门

北慕城南 提交于 2019-11-29 09:37:11
一、Redis的启动 1.基于docker启动 1) 不带配置文件启动 docker run -p 6379:6379 redis 2) 带配置文件启动 docker run -p 6379:6379 -v /usr/local/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf 3)使用docker容器内的客户端来操作redis服务器 以交互的方式进入到redis容器,再在/usr/local/bin/使用redis-cli工具连接redis服务器 得输密码 auth java1904 2.使用原生tar包启动 1)从官方下载tar.gz压缩包,上传到linux中 2)解压 tar -zxvf ... 3)下载make apt-get install make 4)下载gcc,因为redis是c写的,需要gcc工具 apt-get intall gcc 5) 进入解压出来的文件夹内,然后使用make进行编译 6)进入 src,执行./redis-server ../redis.conf 开启服务端 7)使用redis内部的客户端,来连接服务端,对redis服务端进行操作 src里 执行 ./redis-cli 二