PHP头条
热点:

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

<?php

/**

* 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.phpzy.comtrue/php/26211.htmlTechArticlephp操作memcache缓存方法分享 一般来说,如果并发量不大的情况,使不使用缓存技术并没有什么影响,但如果高并发的情况,使用缓存技术就显得很重要了,可以很好的减轻数据库和服务...

相关文章

    暂无相关文章

PHP之友评论

今天推荐