使用RedisTemplate访问Redis数据结构
Redis 数据结构简介Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。
下面来对这5种数据结构类型作简单的介绍:
Redis 5种数据结构的概念大致介绍到这边,下面将结合Spring封装的RedisTemplate来对这5种数据结构的运用进行演示
RedisTemplate介绍spring 封装了 RedisTemplate 对象来进行对redis的各种操作,它支持所有的 redis 原生的 api。
RedisTemplate在spring代码中的结构如下:
1234567org.springframework.data.redis.coreClass RedisTemplate<K,V>java.lang.Object org.springframework.data.redis.core.RedisAccessor org.springframework.data.redis.core.RedisTemplate& ...
RedisTemplate设置过期时间
通过spring boot 中的Redis模板设置数据的过期时间123456789101112131415161718192021222324252627282930313233343536373839//向redis里存入数据和设置缓存时间 stringRedisTemplate.opsForValue().set("baike", "100", 60 * 10, TimeUnit.SECONDS);//val做-1操作 stringRedisTemplate.boundValueOps("baike").increment(-1);//根据key获取缓存中的val stringRedisTemplate.opsForValue().get("baike")//val +1 stringRedisTemplate.boundValueOps("baike").increment(1);/& ...
Scala面向对象编程之对象
对象Scala中的objectobject 相当于 class 的单个实例,通常在里面放一些静态的 field 或者 method;
在Scala中没有静态方法和静态字段,但是可以使用object这个语法结构来达到同样的目的。
object作用:
存放工具方法和常量
高效共享单个不可变的实例
单例模式
举例说明:
12345678910111213141516171819202122232425package com.yi.claszclass Session {}object SessionFactory{ //该部分相当于java中的静态块 val session = new Session() //在object中的方法相当于java中的静态方法 def getSession(): Session ={ session }}object SessionDemo{ def main(args: Array[String]): Unit = { //单例对象,不需要new,用【 ...
Scala面向对象编程之继承
Scala面向对象编程之继承Scala中继承(extends)的概念
Scala 中,让子类继承父类,与 Java 一样,也是使用 extends 关键字;
继承就代表,子类可继承父类的 field 和 method,然后子类还可以在自己的内部实现父类没有的,子类特有的 field 和method,使用继承可以有效复用代码;
子类可以覆盖父类的 field 和 method,但是如果父类用 final 修饰,或者 field 和 method 用 final 修饰,则该类是无法被继承的,或者 field 和 method 是无法被覆盖的。
rivate 修饰的 field 和 method 不可以被子类继承,只能在类的内部使用;
field 必须要被定义成 val 的形式才能被继承,并且还要使用 override 关键字。 因为 var 修饰的 field 是可变的,在子类中可直接引用被赋值,不需要被继承;即 val 修饰的才允许被继承,var 修饰的只允许被引用。继承就是改变、覆盖的意思。
Java 中的访问控制权限,同样适用于 Scala
header 1
header 2 ...
类
类12345678910111213141516171819202122232425262728293031323334353637/*** 在Scala中,类并不用声明为public类型的。* Scala源文件中可以包含多个类,所有这些类都具有共有可见性。*/class Person { //用val修饰的变量是可读属性,有getter但没有setter(相当与Java中用final修饰的变量) val id="9527" //用var修饰的变量都既有getter,又有setter var age:Int=18 //类私有字段,只能在类的内部使用或者伴生对象中访问 private var name : String = "唐伯虎" //类私有字段,访问权限更加严格的,该字段在当前类中被访问 //在伴生对象里面也不可以访问 private[this] var pet = "小强"}//伴生对象(这个名字和类名相同,叫伴生对象)object Person{ def main(ar ...
集合 List、Set、Map
List在Scala中列表要么为空(Nil表示空列表),要么是一个head元素加上一个tail列表。
12345678910111213141516171819object ListApp { def main(args: Array[String]): Unit = { val list1 = List("Hello", "Scala", "Hadoop") println(list1) val list2 = "Spark" :: "Storm" :: "Kylin" :: "Scala" :: Nil println(list2) val list3 = scala.collection.mutable.ListBuffer[String]() // 判断list是否为空 if (list3.isEmpty){ println("我是空") ...
元组
元组映射是K/V对偶的集合,对偶是元组的最简单形式,元组可以装着多个不同类型的值。
创建元组
元组是不同类型的值的聚集;对偶是最简单的元组。
元组表示通过将不同的值用小括号括起来,即表示元组。
创建元组格式:
1val tuple=(元素,元素...)
例程:
12345678910111213141516171819202122232425/** * 元组 */object TupleApp { def main(args: Array[String]): Unit = { val tup = ("Hadoop", 3.1415, 12, Map("NO1" -> "美女"), Array("Hello", "Scala", "Hadoop", "Spark", "Storm")) println(tup._1) println ...
映射
映射在Scala中,把哈希表这种数据结构叫做映射。
12345678// 构建映射var scores1 = Map("NO1" -> "校花", "NO2" -> "美女", "NO3" -> "女神")val scores2 = Map(("NO1" -> "校花"), ("NO2" -> "美女"), ("NO3" -> "女神"))scores1 +=("NO4" -> "萝莉")//获取映射的指println(scores1("NO2"))println(scores2.getOrElse("NO4", "不在榜单中"))
结果
12美女不在榜单中
注意:通常我们在创建一个集合是会用val这个关键字 ...
数组
数组12345(1)定长数组定义格式: val arr=new Array[T](数组长度)(2)变长数组定义格式: val arr = ArrayBuffer[T]()
注意需要导包:import scala.collection.mutable.ArrayBuffer
例程12345678910111213141516171819202122232425262728293031323334object ArrayApp { def main(args: Array[String]): Unit = { // 数组声明 val arr = new Array[String](5) arr(1) = "HAHA" println(arr.mkString(",")) println("**********************************************************") // 初始化赋值 val arr2 ...