Heim >Backend-Entwicklung >PHP-Tutorial >php操作memcache缓存方法分享_PHP教程

php操作memcache缓存方法分享_PHP教程

WBOY
WBOYOriginal
2016-07-13 09:52:04735Durchsuche

php操作memcache缓存方法分享

   一般来说,如果并发量不大的情况,使不使用缓存技术并没有什么影响,但如果高并发的情况,使用缓存技术就显得很重要了,可以很好的减轻数据库和服务器的压力,当然解决高并发的技术有很多,这里只是以缓存的角度来说明使用memcache的便捷性和方便性,

  使用memcache的前提是需要在服务端先配置好memcahche的环境!确认memcahce可以正常连接之后就可以在程序使用了!

  ?

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

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

/**

* Memcache缓存操作

* @author hxm

* @version 1.0

* @since 2015.05.04

*/

class MCache extends Object implements CacheFace

{

private $mem = null; //Mem对象

 

private $sId = 1; //servier服务ID

 

/**

* 初始化Memcache

*

* @return Object

*/

public function __construct()

{

if ( !class_exists('Memcache') )

{

throw new QException('PHP extension does not exist: Memcache');

}

$this->mem = new Memcache();

}

 

/**

* 链接memcahce服务

*

* @access private

* @param string $key 关键字

* @param string $value 缓存内容

* @return array

*/

private function connect( $sid )

{

$file = $this->CacheFile();

require $file;

if(! isset($cache) )

{

throw new QException('缓存配置文件不存在'.$file);

}

$server = $cache[$this->cacheId];

$sid = isset($sid) == 0 ? $this->sId : $sid;//memcache服务选择

if ( ! $server[$sid])

{

throw new QException('当前操作的缓存服务器配置文件不存在');

}

$host = $server[$sid]['host'];

$port = $server[$sid]['port'];

try {

$this->mem->connect( $host , $port );

} catch (Exception $e) {

exit('memecache连接失败,错误信息:'. $e->getMessage());

}

}

 

/**

* 写入缓存

*

* @access private

* @param string $key 关键字

* @param string $value 缓存内容

* @return array

*/

public function set( $key , $value , $sid , $expire = 0)

{

$data = $this->get($key , $sid); //如果已经存在key值

if( $data )

{

return $this->mem->set( $key , $value ,MEMCACHE_COMPRESSED , $expire);

} else {

return $this->mem->add( $key , $value ,MEMCACHE_COMPRESSED , $expire);

}

}

 

/**

* 读取缓存

*

* @access private

* @param string $key 关键字

* @param int $sid 选择第几台memcache服务器

* @return array

*/

public function get( $key , $sid)

{

$this->connect( $sid );

return $this->mem->get($key);

}

 

/**

* 清洗(删除)已经存储的所有的元素

*

* @access private

* @return array

*/

public function flush()

{

$this->connect();

return $this->mem->flush();

}

/**

* 删除缓存

*

* @access private

* @param string $key 关键字

* @param int $sid 选择第几台memcache服务器

* @return array

*/

public function remove( $key , $sid)

{

$this->connect();

return $this->mem->delete($key);

}

 

/**

* 析构函数

* 最后关闭memcache

*/

public function __destruct()

{

/*if(! $this->mem)

{

$this->mem->close();

}*/

}

}

  以上所述就是本文的全部内容了,希望大家能够喜欢。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1010439.htmlTechArticlephp操作memcache缓存方法分享 一般来说,如果并发量不大的情况,使不使用缓存技术并没有什么影响,但如果高并发的情况,使用缓存技术就...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn