redis有定时删除功能吗


当前第2页 返回上一页

整个过程可以用伪代码描述如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

#

默认每次检查的数据库数量

DEFAULT_DB_NUMBERS = 16

#

默认每个数据库检查的键数量

DEFAULT_KEY_NUMBERS = 20

#

全局变量,记录检查进度

current_db = 0

def activeExpireCycle():

    #

初始化要检查的数据库数量

    #

如果服务器的数据库数量比 DEFAULT_DB_NUMBERS

要小

    #

那么以服务器的数据库数量为准

    if server.dbnum < DEFAULT_DB_NUMBERS:

        db_numbers = server.dbnum

    else:

        db_numbers = DEFAULT_DB_NUMBERS

    #

遍历各个数据库

    for i in range(db_numbers):

        #

如果current_db

的值等于服务器的数据库数量

        #

这表示检查程序已经遍历了服务器的所有数据库一次

        #

将current_db

重置为0

,开始新的一轮遍历

        if current_db == server.dbnum:

            current_db = 0

        #

获取当前要处理的数据库

        redisDb = server.db[current_db]

        #

将数据库索引增1

,指向下一个要处理的数据库

        current_db += 1

        #

检查数据库键

        for j in range(DEFAULT_KEY_NUMBERS):

            #

如果数据库中没有一个键带有过期时间,那么跳过这个数据库

            if redisDb.expires.size() == 0: break

            #

随机获取一个带有过期时间的键

            key_with_ttl = redisDb.expires.get_random_key()

            #

检查键是否过期,如果过期就删除它

            if is_expired(key_with_ttl):

                delete_key(key_with_ttl)

            #

已达到时间上限,停止处理

            if reach_time_limit(): return

activeExpireCycle函数的工作模式可以总结如下:

?函数每次运行时,都从一定数量的数据库中取出一定数量的随机键进行检查,并删除其中的过期键。

?全局变量current_db会记录当前activeExpireCycle函数检查的进度,并在下一次activeExpireCycle函数调用时,接着上一次的进度进行处理。比如说,如果当前activeExpireCycle函数在遍历10号数据库时返回了,那么下次activeExpireCycle函数执行时,将从11号数据库开始查找并删除过期键。

?随着activeExpireCycle函数的不断执行,服务器中的所有数据库都会被检查一遍,这时函数将current_db变量重置为0,然后再次开始新一轮的检查工作。

更多Redis相关知识,请访问Redis使用教程栏目!

以上就是redis有定时删除功能吗的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

redis有定时删除功能吗

更多相关阅读请进入《redis有定时删除吗》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...