博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)
阅读量:6517 次
发布时间:2019-06-24

本文共 5603 字,大约阅读时间需要 18 分钟。

hot3.png

 

1. PHP 连接 Redis

 

访问 redis 官方网站的 client 栏目:,可以获取 redis 的 php 扩展。

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

 

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

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

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

(这三步之前已经做过,参见:)

 

④ 配置 Samba 服务器

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

打开光盘源:

 

 

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

 

挂载光盘镜像:

[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:可预览

 

保存退出。

 

重启 smb 服务:

[root@localhost ~]# service smb restart

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

[root@localhost ~]# yum install samba

重新执行重启 smb 服务:

 

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

[root@localhost ~]# smbpasswd -a apacheNew 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就可以了(参见《》):

复制代码

[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/apacheYou 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 ~]# smbpasswd -a apache

  New SMB password:
  Retype new SMB password:
  Added user apache.
  You have new mail in /var/spool/mail/root

复制代码

用户名:apache,密码:123

 

⑤ 在 windows 下对 linux 进行映射:

 

 

输入映射文件夹:

 

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

登陆之后:

 

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

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

解决方案:

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

查看 facl 权限:

复制代码

[root@localhost ~]# getfacl /usr/local/apache2/htdocs/getfacl: Removing leading '/' from absolute path names# file: usr/local/apache2/htdocs/# owner: apache# group: apacheuser::rwxuser:apache:rwxgroup::r-xmask::rwxother::rwxdefault:user::rwxdefault:user:apache:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x

复制代码

 如果还不行,则参照:《》:

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

重启 Linux 服务器:

reboot

 

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

复制代码

connect('localhost', 6379); //连接地址; 端口号; 连接时长,默认为0,不受限制var_dump($a);

复制代码

 

启动 apache:

/usr/local/apache2/bin/apachectl start

 

访问:192.168.254.100/redis/redis.php,输出:

bool(true)

表示连接 redis 服务已经成功。

 

此时登录客户端,输入 keys *:

[root@localhost ~]# redis-cli -a phpdee127.0.0.1:6379> keys *(empty list or set)

当前库中没有键;

 

同时可以在 redis.php 中使用 keys() 方法(要先授权,否则返回 bool(false) ):

复制代码

connect('localhost', 6379); //连接地址; 端口号; 连接时长,默认为0,不受限制//var_dump($a);$data = $redis->keys('*');var_dump($data);

复制代码

访问:192.168.254.100/redis/redis.php,输出:

array(0) { }

当前库中没有键。

 

此时在 redis.php 中使用 set() 方法创建一个键值对:

复制代码

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);

复制代码

访问: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):

复制代码

    
PHP+Redis信息管理系统
用户名:
密码:
年龄:

复制代码

界面:

 

reg.php(添加用户的操作):

复制代码

incr('userid');//向 hash 表中批量添加数据:hMset $redis->hMset('user:'.$uid, array('uid'=>$uid, 'name'=>$username, 'password'=>$password, 'age'=>$age));//跳转header('location:list.php');

复制代码

 

 redis.php(实例化 redis 对象并连接 redis 服务器,同时授权):

复制代码

connect('localhost', 6379); //连接地址; 端口号; 连接时长,默认为0,不受限制//授权$redis->auth('phpdee');

复制代码

 

list.php(显示所有用户列表的界面,提供删除、编辑操作):

复制代码

    
用户信息列表 返回注册页面
get('userid'); $i++ ){ $data[] = $redis->hgetall('user:'.$i); //过滤数组中的空元素 $data = array_filter($data);}?>
uid name age 操作
删除 | 编辑

复制代码

 

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

注册完之后进入 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:11) "uid"2) "1"3) "name"4) "dee"5) "password"6) "202cb962ac59075b964b07152d234b70"7) "age"8) "25"

复制代码

 

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

 

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

复制代码

del('user:'.$uid);header('location:list.php');

复制代码

 

mod.php(编辑用户信息的界面,和 add.php 相似):

复制代码

    
编辑用户
hgetall('user:'.$uid); ?>
用户名:
年龄:

复制代码

 

 

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

复制代码

hmset('user:'.$uid, array('name'=>$name, 'age'=>$age));//跳转if($res){ header('location:list.php');}

复制代码

 

转载于:https://my.oschina.net/yonghan/blog/672948

你可能感兴趣的文章
放量滞涨,抛出信号
查看>>
BeanFactory not initialized or already closed - call 'refresh' before accessing beans解决办法
查看>>
dSYM 文件分析工具
查看>>
R语言合并data.frame
查看>>
linux主机下的Vmware Workstation配置NAT设置 端口映射-Ubuntu为例
查看>>
unity physics joint
查看>>
TD的访问地址
查看>>
JAVA常见面试题之Forward和Redirect的区别
查看>>
tmpFile.renameTo(classFile) failed 错误
查看>>
【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制
查看>>
一张图看懂normal,static,sealed,abstract 的 区别
查看>>
Task的使用
查看>>
grep和正则表达式
查看>>
s:iterator巧妙控制跳出循环
查看>>
移动互联网思维
查看>>
redis-手写redis切片和非切片连接池并注入springboot中
查看>>
Serv-U 的升级及数据备份和迁移【转】
查看>>
webstorm无法显示左边文件夹目录的解决方法
查看>>
Android数据保存之文件保存
查看>>
数字校园-云资源平台 2014.10.26-人人通共享空间
查看>>