Removed a redundant check of ttl in setcmd #1539
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
(这个pr前面不小心被我操作分支的时候删了,现在再提一下)
![image](https://private-user-images.githubusercontent.com/41671101/239688437-f7032721-8c24-4d1a-96d8-e71744bd8222.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMjUyMDYsIm5iZiI6MTczOTEyNDkwNiwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0MzctZjcwMzI3MjEtOGMyNC00ZDFhLTk2ZDgtZTcxNzQ0YmQ4MjIyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDE4MTUwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExN2NlMGJhMDFhYTdiYTE5OWM2M2EyM2U4NjRiYzdhMjkwMGJlNWE5M2VlYzg2ZWZmOTY1NTUwMDM1ZjliN2QmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.kQcQDfCwp1bXXDyREoczHdvbx5c0LvFFmYEpshjEgi4)
1.执行set key value ex/px sec/ms 命令时,会对ttl进行两次非负检查:
第一次:setcmd的Doinitial函数中,如果set命令带了ex/px则会判断ttl是否非负
第二次:在带有ex/px执行set时,setcmd的Do方法最后是调用partition->db()->Setex方法,在这个方法内部会进行ttl非负检查:
![image](https://private-user-images.githubusercontent.com/41671101/239688447-a80ddcb8-647f-421a-b035-e903136f3659.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMjUyMDYsIm5iZiI6MTczOTEyNDkwNiwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0NDctYTgwZGRjYjgtNjQ3Zi00MjFhLWIwMzUtZTkwMzEzNmYzNjU5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDE4MTUwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY0ZTQ5NmQyMThkYWRlMjY2MTkxNThlYjFmNmJjMmJhMzM1NTRkNThjZTBlOTg5N2NjNDBkZGYzMmI1MWVlNDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.jQc7zkpS0UNyoYAGvnxLRC6V92KVkvdJC_SJgjwIPO0)
![image](https://private-user-images.githubusercontent.com/41671101/239688458-a1ec8c5e-99c6-4a7e-a88f-3b08742935db.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMjUyMDYsIm5iZiI6MTczOTEyNDkwNiwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0NTgtYTFlYzhjNWUtOTljNi00YTdlLWE4OGYtM2IwODc0MjkzNWRiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDE4MTUwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI1N2NjOGMzODQ0ODM5NTcxOGRkZWYzNzk2Mzc3N2MxZTgxM2U5MzAxNmRiMzI0OWE5ZmUwYThkMzdmNTQ2ODUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.2FPA3yRz6ld9tfqweAv9ceVLqIQDSEOQhA276vAt1N4)
为什么选择移除Doinitial中的非负检查,而不是移除setex函数中的:因为像"setex key seconds value"这样的命令在Doinitial中没有做ttl的非负检查(依赖于Setex方法中的ttl非负检查)
2.在一个被高频执行的函数中(Docmd函数),疑似存在不必要的动态类型转换(先把父类指针转子类传递给SetConn方法,但是SetConn的形参是父类指针的类型,所以又会隐式转换回去,平白多了2次没有意义的转换?)
![image](https://private-user-images.githubusercontent.com/41671101/239688483-1e33b27b-b21a-4357-a553-85955dd6f19d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMjUyMDYsIm5iZiI6MTczOTEyNDkwNiwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0ODMtMWUzM2IyN2ItYjIxYS00MzU3LWE1NTMtODU5NTVkZDZmMTlkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDE4MTUwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThjYmNmMDc3YWM3NzhjMzk2NmY2MTQ2OTcwYjE0NjI3ZWI3YjhhODQyNDdkZDNmNjFjYjlkZDAxOTU3NmI0NTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.7UW0w9OUhr-Qwlkx0CRhFQcJp6a_7ozylJy-BEpi8LU)
![image](https://private-user-images.githubusercontent.com/41671101/239688486-02b6673b-7eb6-40af-bde0-70e37d67b939.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMjUyMDYsIm5iZiI6MTczOTEyNDkwNiwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0ODYtMDJiNjY3M2ItN2ViNi00MGFmLWJkZTAtNzBlMzdkNjdiOTM5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDE4MTUwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ0ODA2ZGFkYmFiMDBiMDAyMWJhYjBiNDkxNWU2ZDBhMGNhZjYzM2EzMjhlNmYyODQyZjBlNWE5MmJlNjNmZDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.g4_SYvt0_iCAxKbMaEaHajAXiyykqvgrSpQkJEw6f-c)
当然,上面第2点只是我个人的看法,只是我个人没有看出这个转换有别的用处,如有错误,还请指正。