redis学习(一)
下载windows版本的redis:https://github.com/MSOpenTech/redis/releases
我下的是3.2
安装:然后解压到自定义的文件夹中,我是按照菜鸟教程中在C盘新建一个redis目录,然后将下载的文件解压到新建的redis目录中.
启动:先启动服务器端 在C盘redis目录中打开命令窗口输入命令:
redis-server.exe redis.windows.conf
出现如下界面说明redis服务气端安装成功
再重新打开一个命令窗口输入命令
redis-cli.exe -h 127.0.0.1 -p 6379
用来启动客户端,出现如下界面表示连接成功
Redis数据类型有5中
1. string(字符串类型)
2. Hash(哈希)
只是键就得不到,只是测试
3. List(列表)
4. Set(集合)
一.添加的时候出现错误(error) WRONGTYPE Operation against a key holding the wrong kind of value
是因为键名重复,将其键名称改一下或者将前面的runnob删除
二.redis虽然被添加2次,但根据集合内元素的唯一性,第二次插入的元素将被忽略
5. Zset(有序集合)
还有一个特殊的Hyperloglog(用于计算元素的数量,不保存元素的值)
注意,’单引号也是可以的
删除键
Del 键名
发布订阅
SUBSCRIBE redisChat 创建了订阅频道名为 redisChat:
重新开启个 redis 客户端,在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息
PUBLISH redisChat "Redis is a great caching technique"
客户端
事务
get不能小写
脚本
Redis 脚本使用 Lua 解释器来执行脚本
EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
Redis 数据备份与恢复
Redis SAVE 命令用于创建当前数据库的备份。
如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令
创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
安全
CONFIG get requirepass
查看是否设置了密码验证
默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。
CONFIG set requirepass "123456"
使用如上命令设置密码,
设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。
127.0.0.1:6379> AUTH password
Phpredis下载:http://pecl.php.net/package/redis/3.1.6/windows
编辑apache 的php.ini扩展,自己添加
重启apache,查看phpinfo()出现如下界面表示成功
测试:
在根目录下新建一个test.php
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('123456'); //没有密码可以不用这句,还有一种方法就是要删密码进入redis安装目录修改redis的配置文件,即redis.windows.conf中删除requirepass “123456”就可以了
echo "Connection to server sucessfully";
//设置 redis 字符串数据
$redis->set("tutorial-name", "Redis tutorial");
// 获取存储的数据并输出
echo "Stored string in redis:: " . $redis->get("tutorial-name");
?>
在浏览器中访问出现如下界面表示成功
设置redis服务器端开机自启动
redis-server.exe --service-install redis.windows.conf
然后再服务中就可以看到如下界面
此时服务是关着的,自己手动启动一下。等到下次开机时自动启动
推荐一篇blog挺好的:https://www.cnblogs.com/aipiaoborensheng/p/5666005.html
/***************************************************************代码测试*****************************************************************/
<?php
header('Content-type:text/html;charset=utf-8');
$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->auth('123456');
//字符串类型
//$redis->set('test','1111111');//设置key和value的值
/*
$result = $redis->get('test');//获取key的值
var_dump($result);
$redis->delete('test');
var_dump($redis->get('test'));
*/
/*
$redis->setnx('test',"22222");//所谓 SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置
echo $redis->get('test');
*/
//var_dump($redis->exists('test'));//判断键是否存在
//$redis->set('test',123);
//$redis->incr('test'); //递增键的键值
//$redis->decr('test');//递减键的键值
//$redis->set('test1',11111);
//$redis->set('test2',22222);
//$result = $redis->getMultiple(['test1','test2']);//取得所有指定键的值
//echo $redis->get('test');
//var_dump($result);
//$redis->delete('test');
//var_dump($redis->lpush('test','1111'));//列表头部添加字符串值
//var_dump($redis->rpush('test','2222'));//由列表尾部添加字符串值
$redis->delete('test');
//$redis->lpush("test","111");
//$redis->lpush("test","1111");
//$redis->lpush("test","11111");
//$redis->lpush("test","111111");
//var_dump($redis->lpop("test")); //返回和移除列表的第一个元素
//var_dump($redis->lsize("test"));//返回的列表的长度
//var_dump($redis->lget('test',1));//返回指定键存储在列表中指定的元素。
//var_dump($redis->lset('test',1,'xiugai'));
//var_dump($redis->lget('test',1));//为列表指定的索引赋新的值,若不存在该索引返回false.
//var_dump($redis->lgetrange("test",0,-1));//返回在该区域中的指定键列表中开始到结束存储的指定元素
//var_dump($redis->lremove('test','111',3));//从列表中从头部开始移除count个匹配的值
//var_dump($redis->lgetrange("test",0,-1));
/*
$redis->delete('test');
var_dump($redis->sadd('test','aaa'));
var_dump($redis->sadd('test','bbb'));
var_dump($redis->sort('test'));
*/
/*
$redis->delete('test');
$redis->sadd('test','111');
$redis->sadd('test','112');
$redis->sadd('test','113');
var_dump($redis->scontains('test', '111'));//检查集合中是否存在指定的值。
*/
/*
$redis->sadd('test','111');
$redis->sadd('test','112');
echo $redis->ssize('test'); //返回集合中存储值的数量
*/
/*
$redis->sadd("test","111");
$redis->sadd("test","222");
$redis->sadd("test","333");
var_dump($redis->spop("test")); //随机移除并返回key中的一个值
*/
$redis->sadd("test","111");
$redis->sadd("test","222");
print_r($redis->smembers('test')); //返回集合中所有内容
?>