当服务器考虑将一个共享对象设置为键的值对象时候,程序需要先检查给定的共享对象和键想创建的目标对象是否完全相同,只有在共享对象和目标对象完全相同的情况下,程序才会将共享对象用作键的值对象,而一个共享对象保存的值越复杂,验证共享对象和目标对象是否相同所需要的复杂度就会越高,消耗CPU的时间也会越多。
- 如果共享对象是保存整数值的字符串对象,那么检验操作的复杂度为O(1);
- 如果共享对象是保存字符串的字符串对象,那么检验操作的复杂度为O(N);
- 如果共享对象是包含多个值,或者对象的对象,比如,列表对象或者哈希对象,那么检验操作的复杂度为O(N2);
因此,尽管共享更复杂的对象可以节约更多的内存,但是受到CPU时间的限制,Redis只对包含整数值的字符串进行共享。










网友评论