利用redis存储session,解决登录同步问题

原创 2015年11月20日 14:51:52

一、php session存储方式

在php中,存储session可以使用files user memcached redis,对于小型单一网站可以直接使用files的方式存储session。使用缓存数据库存储session的好处是较之文件存储方式,在大用户量的情况下速度更快、性能更优。而且如果做分布式系统的话,使用数据库存储是很好的方式。
所以,如果使用数据库存储session,memecached和redis到底那种更好。

二、redis和memcached的比较

1、redis不仅仅支持简单的k/v类型的数据,同时还提供list、set、zset、hash等数据结构的存储;
2、redis支持数据的备份,即master-slave模式的数据备份;
3、redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启的时候可以再次加载进行使用;
redis和memcached都是高性能的分布式缓存服务器,通过上述比较,考虑到如果重启服务器,memcached中的数据都会丢失,会影响用户的体验,所以使用redis存储session是比较好的方案。

三、redis存储session的php实现

在我的上篇博客中,已经介绍了怎么安装redis服务器及phpredis扩展,具体请参考:http://blog.csdn.net/turtleo/article/details/49934497

<?php

ini_set('session.gc_maxlifetime', 3600);
ini_set('session.save_handler', "redis");
ini_set("session.save_path", "tcp://127.0.0.1:6379");
session_start();
$_SESSION['uid'] = "2";
$_SESSION['username'] = "turtle";

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$user = $redis->get('PHPREDIS_SESSION:'.session_id()).'</br>';
echo $user;
?>

如果在配置文件中/etc/redis/6379.conf中开启了requirepass,这使用如下代码

ini_set('session.gc_maxlifetime', 3600);
ini_set('session.save_handler', "redis");
ini_set("session.save_path", "tcp://127.0.0.1:6379?auth=password");
session_start();
$_SESSION['uid'] = "2";
$_SESSION['username'] = "turtle";

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('turtletl.com');
$user =  $redis->get('PHPREDIS_SESSION:'.session_id()).'</br>';
echo $user;
?>

可以进行如下配置开启requirepass:

vim /etc/redis/6379.conf

具体配置文件依情况而定

requirepass 密码

重启redis服务器。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Tomcat7基于Redis的Session共享

目前,为了使web能适应大规模的访问,需要实现应用的集群部署。集群最有效的方案就是负载均衡,而实现负载均衡用户没一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无...

redis实现session共享,解决一个账号只能在一个终端登陆

一个账号在a电脑登陆了,此时在b电脑登陆,就会将a踢下线,需要解决两个问题: 一、确保账号只能在一个地方登陆; 二、登陆后发送消息通知; 对于第一个问题,我们可以借助于session存储于r...
  • ljihe
  • ljihe
  • 2017-07-08 11:10
  • 800

session保存到redis简单实现

在负载均衡情况下,如果用户访问不同的机器,如果没有做session同步,用户就会被提出,这样用户体验非常不好,所以我们很远必要做session同步,把session放到reids缓存服务器就能很好的解...

将session保存到redis上,实现session共享

当一个项目使用集群部署方案时就必须用到session的共享。在这里先简单讲述如何在springmvc中将session保存到redis中。

redis 或者memcache session 存储 同步

session可以存放在文件中,可以存放在memcache中,本以为session是不可以存放到redis中了,今天尝试了一下,竟然可以。session存文件是没问题的,存memcache也是没有问题...

用Redis实现Session功能,实现单点登录

0.什么是Redis Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API ---维基百科 1.与其他...

你的项目真的需要Session吗?redis保存session性能怎么样?

在web开发中,Session这个东西一直都很重要,至少伴随我10年之久, 前一段时间发生一个性能问题,因为redis session 问题,后来想想 其实我的项目session 是不需要的。 先看看...

spring-session,利用redis存储session,解决集群共享session的问题

用nginx做负载的时候,会出现每一次http请求都会分配到不同的tomcat上,这样用session存储用户数据就会有问题。因为tomcat集群之间没有实现session共享。 spring-se...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)