目前,我的理解是' monitor '命令输出服务器收到的所有命令,无论它们被发送到哪个数据库号。
这对我来说是一个问题,因为我使用一个数据库来保存“正常”数据,一个数据库用于保存会话数据,而会话数据库的输出几乎无法读取其他数据库的输出。
有没有办法将输出限制为只有一个数据库?
答案 0 :(得分:13)
这个怎么样?
redis-cli monitor |grep '(db 1)'
这样你就可以获得DB 1的输出
答案 1 :(得分:5)
redis中的数据库与SQL中的数据库完全不同。它们本质上只是一个预定义的键前缀,没有自己的配置。
如果您只想查看实际数据的更改,则需要将其设置为单独的实例,以便会话数据转到不同的进程。
这样做的开销不大(在大多数情况下,它实际上会提高性能),并且使用多个实例还有其他充分的理由。例如,您可能希望将实际数据实时写入磁盘并进行备份,但在服务器重新启动后会话数据毫无价值,因此根本不需要将其保存到磁盘。使用共享实例,您必须保存并备份所有内容,这对于会话数据变化远远超过永久数据的性能不是特别好。
答案 2 :(得分:0)
import spark.implicits._
import org.apache.spark.sql.Row
val df = spark.sparkContext.parallelize(Seq((Seq(2019,2018,2017), Seq(100,200,300), Seq("IN","PRE","POST")),(Seq(2018), Seq(73), Seq("IN")),(Seq(2018,2017), Seq(56,89), Seq("IN","PRE")))).toDF()
val transformedDF = df
.flatMap{case Row(dates: Seq[Int], amounts: Seq[Int], statuses: Seq[String]) =>
dates.indices.map(index => (dates(index), amounts(index), statuses(index), index+1))}
.toDF("Date", "Amount", "Status", "Sequence")
df.show
+----+------+------+--------+
|Date|Amount|Status|Sequence|
+----+------+------+--------+
|2019| 100| IN| 1|
|2018| 200| PRE| 2|
|2017| 300| POST| 3|
|2018| 73| IN| 1|
|2018| 56| IN| 1|
|2017| 89| PRE| 2|
+----+------+------+--------+
是数据库编号。