大数据中Redis的介绍及用法案例
Redis介绍
介绍:一个高性能的kv数据库,支持数据持久化,可保存在磁盘上面,还提供list,set,hash多种类型结构的存储,支持数据备份支持; 优点:读写速度快;支持丰富的数据类型strings lists hashs;所有操作都是原子性,要么成功要么失败;多个操作支持事务; 和其他kv不同:运行在内存但是可以持久化磁盘,在内存运行速度快操作简单,可以做一些复杂事情,磁盘以追加格式产生。首先安装window版或者Linux版
代码案列:
先导入maven
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
以下idea案列
package redis
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
import redis.clients.jedis.{Jedis, JedisPool}
/*
*项目名: spark
*文件名: RedisDemo
*创建者: Mr.Justin
*创建时间: 2019/4/7 19:38
*描述: TODO1
*/
object RedisDemo {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local[*]").setAppName(this.getClass.getSimpleName)
val sc: SparkContext = new SparkContext(conf)
val rdd: RDD[String] = sc.textFile("d:/desktop/1.txt")
val words: RDD[(String, Int)] = rdd.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
val filed: RDD[(String, Int)] = words.filter(_._1.length > 0)
filed.foreachPartition(partition => {
val jedis: Jedis = GetJedis.getJedis(1)
partition.foreach(tp =>
jedis.hset("wordcount", tp._1, tp._2.toString)
)
jedis.close()
}
)
sc.stop()
}
}
object GetJedis {
private val pool: JedisPool = new JedisPool()
def getJedis(x: Int = 0) = {
val resource: Jedis = pool.getResource
resource.select(x)
resource
}
}
下载一个RedisDesktopManager
连接服务器即可看到:
OK!this is Redis!
Thanks for watching!