Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

Stella981
• 阅读 695

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

1. PHP 连接 Redis

访问 redis 官方网站的 client 栏目:http://www.redis.io/clients#php,可以获取 redis 的 php 扩展。

其中 phpredis 扩展比较稳定,功能也比较全,属于一个第三方扩展,但是已经被 PHP 官方授权,它的方法名和客户端下的方法名基本一致。github 地址:https://github.com/phpredis/phpredis,方法在这里也能查得到。

① 下载 phpredis 的源代码包,解压、配置、编译、安装;

② 编辑 php.ini,给 PHP 打上 redis 模块(extension=redis.so);

③ 写一个 phpinfo 的页面,访问,找到 redis 扩展:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

(这三步之前已经做过,参见:http://www.cnblogs.com/dee0912/p/4343032.html

④ 配置 Samba 服务器

(在一些中小型网络,或者企业的内部网中,利用Linux建立文件服务器是一个很好的解决方案。针对企业内部网中的绝大部分客户机采用Windows的情况,我们可以通过使用 Samba 来实现文件服务器功能。 )

打开光盘源:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

勾选“已连接”,选择 ISO 镜像文件,确定:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

挂载光盘镜像:

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/ mount: block device /dev/sr0 is write-protected, mounting read-only

yum 安装 samba(跳过有损的依赖包):

[root@localhost ~]# yum -y install samba* --skip-broken

安装完之后配置 samba 文件:

[root@localhost ~]# vi /etc/samba/smb.conf

加几个虚拟目录:

[web] path = /usr/local/apache2/htdocs browseable = yes writable = yes

browseable:可预览

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

保存退出。

重启 smb 服务:

[root@localhost ~]# service smb restart

如果提示:smb: 未被识别的服务,则说明没有安装完全,重新:

[root@localhost ~]# yum install samba

重新执行重启 smb 服务:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

给 samba 服务其添加用户(apache):

[root@localhost ~]# smbpasswd -a apache New SMB password: Retype new SMB password: Failed to add entry for user apache. [root@localhost ~]#

如果报错:Failed to add entry for user apache.

说明这是因为没有加相应的系统账号,所以会提示Failed to add entry for user的错误,只需增加相应的系统账号test就可以了(参见《增加samba用户提示Failed to add entry for user》):

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

[root@localhost ~]# groupadd apache -g 6000
You have new mail in /var/spool/mail/root [root@localhost ~]# useradd apache -u 6000 -g 6000 -s /sbin/nologin -d /dev/null
useradd:警告:此主目录已经存在。 不从 skel 目录里向其中复制任何文件。 [root@localhost ~]# mkdir /home/apache [root@localhost ~]# chown 777 /home/apache You have new mail in /var/spool/mail/root [root@localhost ~]# smbpasswd -a apache
New SMB password: Retype new SMB password: Mismatch - password unchanged. Unable to get new password.

 [root@localhost ~]# smbpasswd -a apache
  New SMB password:
  Retype new SMB password:
  Added user apache.
  You have new mail in /var/spool/mail/root

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

用户名:apache,密码:123

⑤ 在 windows 下对 linux 进行映射:

 Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

输入映射文件夹:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

输入用户名:apache,密码:123,确定:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

登陆之后:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

在目录中建立一个 redis 目录,提示没有权限:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

原因:apache 用户对本目录没有操作权限

解决方案:

[root@localhost ~]# setfacl -m d:u:apache:rwx -R /usr/local/apache2/htdocs

查看 facl 权限:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

[root@localhost ~]# getfacl /usr/local/apache2/htdocs/ getfacl: Removing leading '/' from absolute path names

file: usr/local/apache2/htdocs/

owner: apache

group: apache

user::rwx user:apache:rwx group::r-x mask::rwx other::rwx default:user::rwx default:user:apache:rwx default:group::r-x default:mask::rwx default:other::r-x

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

 如果还不行,则参照:《Samba服务中,不能创建文件夹和文本文件_解决办法》:

[root@localhost ~]# vi /etc/selinux/config

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

重启 Linux 服务器:

reboot

⑥ (在 test 目录下)重新创建 redis 目录,在 redis 目录中创建文件 redis.php,打开该文件,编辑:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

connect('localhost', 6379); //连接地址; 端口号; 连接时长,默认为0,不受限制 var\_dump($a); ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) 启动 apache: /usr/local/apache2/bin/apachectl start 访问:192.168.254.100/redis/redis.php,输出: bool(true) 表示连接 redis 服务已经成功。 此时登录客户端,输入 keys \*: \[root@localhost ~\]# redis-cli -a phpdee 127.0.0.1:6379> keys \* (empty list or set) 当前库中没有键; 同时可以在 redis.php 中使用 keys() 方法(要先**授权**,否则返回 bool(false) ): ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) connect('localhost', 6379); //连接地址; 端口号; 连接时长,默认为0,不受限制 //var\_dump($a); $data = $redis->keys('\*'); var\_dump($data); ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) 访问:192.168.254.100/redis/redis.php,输出: array(0) { } 当前库中没有键。 此时在 redis.php 中使用 **set()** 方法创建一个键值对: ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) connect('localhost', 6379); //连接地址; 端口号; 连接时长,默认为0,不受限制 //var\_dump($a); //授权 $redis->auth('phpdee'); //设置一个键值对 $redis->set('name', 'dee'); //获取 name 的值 $name = $redis->get('name'); var\_dump($name); //获取库中所有的键 $data = $redis->keys('\*'); var\_dump($data); ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) 访问:192.168.254.100/redis/redis.php,输出: string(3) "dee" array(1) { \[0\]=> string(4) "name" } 说明 set() 方法成功。 在 linux redis 客户端中再次查询库中的键: 127.0.0.1:6379> keys \* 1) "name" 127.0.0.1:6379> get name "dee" 同样获取到了 key 为 name 的值。 **【总结】操作步骤:实例化 redis 对象→连接 redis 服务器→授权→相关操作** **相关操作:** 使用 hash 类型存储用户信息 在 test 目录下新建 add.php(添加用户的界面,提交到 reg.php): ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) PHP+Redis信息管理系统
用户名:
密码:
年龄:
![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) 界面: ![](http://static.oschina.net/uploads/img/201610/15175612_t1mz.jpg) reg.php(添加用户的操作): ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) incr('userid'); //向 hash 表中批量添加数据:hMset $redis->**hMset**('user:'.$uid, array('uid'=>$uid, 'name'=>$username, 'password'=>$password, 'age'=>$age)); //跳转 header('location:list.php'); ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif)  redis.php(实例化 redis 对象并连接 redis 服务器,同时授权): ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) **connect**('localhost', 6379); //连接地址; 端口号; 连接时长,默认为0,不受限制 //授权 $redis->**auth**('phpdee'); ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) list.php(显示所有用户列表的界面,提供删除、编辑操作): ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) 用户信息列表 返回注册页面 **get**('userid'); $i++ ){ $data\[\] = $redis->**hgetall**('user:'.$i); //过滤数组中的空元素 $data = **array\_filter**($data); } ?>
uid name age 操作
删除 | 编辑

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

在 http://192.168.254.100/redis/add.php 中输入信息,注册(例如姓名:dee,密码:123,年龄:25);

注册完之后进入 redis 客户端:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

127.0.0.1:6379> keys *

  1. "userid"
  2. "user:1"

127.0.0.1:6379> get userid "1"

127.0.0.1:6379> hgetall user:1

  1. "uid"
  2. "1"
  3. "name"
  4. "dee"
  5. "password"
  6. "202cb962ac59075b964b07152d234b70"
  7. "age"
  8. "25"

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

多次测试之后访问 http://192.168.254.100/redis/list.php:

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

del.php(删除用户信息的操作):

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

**del**('user:'.$uid); header('location:list.php'); ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) mod.php(编辑用户信息的界面,和 add.php 相似): ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif) 编辑用户 hgetall('user:'.$uid); ?>
<form action="doEdit.php" method="post">
    <table align="left">
        <tr><td>用户名:</td><td><input type="text" name="username" value="<?php echo $data\['name'\];?>"></td></tr>
        <tr><td>年龄:</td><td><input type="text" name="age" value="<?php echo $data\['age'\];?>"></td></tr>
        <tr><td><input type="submit" value="修改"></td><td><input type="hidden" name="uid" value="<?php echo $data\['uid'\];?>"></td></tr>
    </table>
</form>

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

doEdit.php(编辑用户的操作):

Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

hmset('user:'.$uid, array('name'=>$name, 'age'=>$age)); //跳转 if($res){ header('location:list.php'); } ![复制代码](http://static.oschina.net/uploads/img/201610/15175612_yJFj.gif)
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
待兔 待兔
2个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
8个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这