php读取redis数据 php redis lua

PHP 读取redis 时,key 的长短会影响读取时间吗

redis key 的长度主要会影响空间占用,时间上,差距可以忽略

成都创新互联专注于浮山企业网站建设,响应式网站开发,商城网站定制开发。浮山网站建设公司,为浮山等地区提供建站服务。全流程按需定制开发,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

所以这个不用担心了

php怎样使用redis缓存数据

?php

/**

* Redis缓存操作

* @author hxm

* @version 1.0

* @since 2015.05.04

*/

class RCache extends Object implements CacheFace

{

private $redis = null; //redis对象

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

private $con = null;//链接资源

/**

* 初始化Redis

*

* @return Object

*/

public function __construct()

{

if ( !class_exists('Redis') )

{

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

}

$this-redis = new Redis();

}

/**

* 链接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('当前操作的缓存服务器配置文件不存在');

}希望能帮到你,我还在后盾网学习呢,有不会的可以问我,一会有空回答你。( ^ω^)

php怎么将数据导入redis

对于大访问量的站点使用默认的Session 并不合适,我们可以将其存入数据库、或者使用Redis KEY-VALUE数据存储方案

首先新建一个session表

CREATE TABLE `sessions` (

`sid` char(40) NOT NULL,

`updatetime` int(20) NOT NULL,

`data` varchar(200) NOT NULL,

UNIQUE KEY `sid` (`sid`) USING HASH

) ENGINE=MEMORY DEFAULT CHARSET=utf8;

Mysql 的memory引擎采用内存表,所有数据存储在内存,操作速度快

复制代码

?php

//引入数据库文件

include "db.php";

class MySessionHandler implements SessionHandlerInterface

{

private $savePath;

private $sessData;

public $expiretime; //设置过期时间

public $db; //数据库

public function __construct($hanlder =''){

$this-db = Database::getInstance();

//获取数据库实力

///var_dump($this-db);

}

public function open($savePath, $sessionName)

{

return true;

}

public function close()

{

return true;

}

public function read($id)

{

$sql ="select * from sessions where sid ='$id'";

$result = $this-db-execute($sql);

if(!empty($result)){

return $this-sessData = $result;

}

}

//函数的参数 $id - 当前会话ID

//数据DATA - 序列化之后的字符串

public function write($id, $data)

{

// echo $id;

// echo $data;

$now = time();

$newExp = $now+$this-expiretime; //总时间=当前时间 + 期限时间

$sql = "select * from sessions where sid ='$id'";

$result = $this-db-getOne($sql);

//var_dump($result);

if($data==''||isset($data)){

$data = $this-sessData;

}

if($result){

//如果存在则更新

$sql ="update sessions set updatetime = '$newExp',data ='$data' where sid = '$id'";

//echo $sql;

$update_data =$this-db-execute($sql);

if($update_data){

return true;

}

}else{

//不存在则生成生成

$sql = "insert into sessions(sid,updatetime,data) values('$id','$now','$data')";

$insert_data = $this-db-execute($sql);

if($insert_data){

return true;

}

}

return false;

}

public function destroy($id)

{ //销毁

$sql = "delete from sessions where sid="."$id";

$destory = $this-db-execute($sql);

if($destory){

return true;

}else{

return false;

}

}

public function gc($sessMaxLifeTime)

{

$t = time();

$sql ="delete from sessions where $t - 'updatetime'${sessMaxLifeTime}";

$data = $this-db-execute($this-tosql);

if($data){

return true;

}else{

return false;

}

return true;

}

}

复制代码

实例化

此处 PHP 手册可以有两种方法

1,实现了SessionHandlerInterface借口的对象,自PHP5.4可以使用

2 ,直接使用 session_set_save_handler

复制代码

//判断PHP版本

if(version_compare(PHP_VERSION,5.4)==1){

session_set_save_handler($handler, true);

session_start();

}else{

ini_set('session.use_trans_sid',0);

ini_set('session.use_cookies',1);

ini_set('session.cookie_path','/');

ini_set('session.save_handler','user');

session_module_name('user');

session_set_save_handler(array($session,"open"),array($session,"close"),array($session,"read"),array($session,"write"),array($session,"destory"),array($session,"gc"));

session_start();

}

$_SESSION['QQ']="QQ";

echo $_SESSION['QQ'];

复制代码

数据库代码 db.php

复制代码

?php

class Database{

static $instance;

static $db;

static function getInstance(){

if(self::$instance){

return self::$instance;

}else{

return new Database();

}

}

public function __construct(){

self::$db = new PDO('mysql:host=localhost;dbname=session', 'root','');

}

public function getOne($sql){

$rs =self::$db-query($sql);

@$rs-setFetchMode(PDO::FETCH_ASSOC);//返回关联数组

$result = $rs - fetch();

return $result;

}

public function execute($sql){

$rs = self::$db-exec($sql);

return $rs;

}

}

//$data = Database::getInstance();

//var_dump($data);

复制代码

使用REDIS 存储SESSION

复制代码

?php

class SessionManager{

private $redis;

private $sessionSavePath;

private $sessionName;

private $sessionExpireTime = 30;

public function __construct(){

$this-redis = new Redis();

$this-redis-connect('127.0.0.1',6379); //连接redis

$retval = session_set_save_handler(

array($this,"open"),

array($this,"close"),

array($this,"read"),

array($this,"write"),

array($this,"destory"),

array($this,"gc")

);

session_start();

}

public function open($path,$name){

return true;

}

public function close(){

return true;

}

public function read($id){

$value = $this-redis-get($id);

if($value){

return $value;

}else{

return "";

}

}

public function write($id,$data){

if($this-redis-set($id,$data)){

$this-redis-expire($id,$this-sessionExpireTime);

//设置过期时间

return true;

}

return false;

}

public function destory($id){

if($this-redis-delete($id)){

return true;

}

return false;

}

public function gc($maxlifetime){

return true;

}

//析构函数

public function __destruct(){

session_write_close();

}

}

$re = new SessionManager();

$_SESSION['name'] = "qq";

echo $_SESSION['name'];

php中关于redis和数据库

select 查询的时候始终先查 redis 有没有,没有去查数据库,再把结果缓存起来;

update 修改完数据库内容后,同时对 redis 中缓存的数据做一下 update 更新操作,这样 select 查询 redis 的时候就是查询的最新数据;

同理,delete、insert 操作数据库后也要同时对 redis 中缓存的数据做 update 更新操作,这样 select 查询 redis 的时候就是查询的最新数据;

这样,所有的查询操作就都是对 redis 做缓存读取,可以缓解数据库的压力;

php redis 怎么读取set

?php

$redis = new Redis();

//*********无序集合**********//

//添加set

$redis-

sadd('set1' , 'ab');

$redis-sadd('set1' , 'cd');

$redis-sadd('set1' , 'ef');

//返回集合所有成员

var_dump($redis-smembers('set1'));

//返回集合随机元素

var_dump($redis-srandmember('set1'));

//*********有序集合**********//

//添加zset

$redis-zadd('zset1' , 1 , 'ab');

$redis-zadd('zset1' , 2 , 'cd');

$redis-zadd('zset1' , 3 , 'ef');

//返回指定区间的而元素

$redis-zrange('zset1' , 0 ,1); //0和1之间的元素

//更多请查手册


文章标题:php读取redis数据 php redis lua
文章地址:http://pwwzsj.com/article/docsgep.html