是否可以只监控一个数据库?

时间:2011-09-08 13:23:02

标签: redis

目前,我的理解是' monitor '命令输出服务器收到的所有命令,无论它们被发送到哪个数据库号。

这对我来说是一个问题,因为我使用一个数据库来保存“正常”数据,一个数据库用于保存会话数据,而会话数据库的输出几乎无法读取其他数据库的输出。

有没有办法将输出限制为只有一个数据库?

3 个答案:

答案 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| +----+------+------+--------+ 是数据库编号。