redis数据库,支持数据持久化,常用与分布式锁,支持事务,持久化,非关心型数据库
区别:
关系型数据库:硬盘,安全,结构简单,易于理解,浪费空间
非关系型数据库:内存,断电丢失数据,读写速度快,
内存的速度是硬盘的100倍
redis:用于缓存压力,提升网站访问速度
三种类型:持久化(将数据保存到硬盘中,再开机再读取),支持多种类型(5种),支持储存
作用:
高性能,先读缓存再读数据库
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
高并发,mysql难以处理
redis中有list类型,其中放10个值,访问一个放一个,有效解决高并发
直接操作缓存能够承受的请求是远远大于直接访问数据库
redis和memcached的区别
memcached也是非关系型数据库
安装:
phpstudy中点击redis,reids管理工具,启用就点启用
key value
list
set
zset
hash
首先启动redis输入指令
redis-cli
然后传入值set sex man
这里sex就是键,man就是值
keys 就是读取所有数据
keys a模糊查询
keys *x也是模糊
setex name 10 ding
设置一个十秒钟的值
一些基础操作
简单的字符串列表,可以添加或去除一个元素到头部或者尾部
队列的操作具有原子性,一次只能操作一个值
操作类似羽毛桶放取羽毛球
解决高并发问题
队列中一个列表可以装40亿个元素
首先,创建队列
lpush llllll bbbbb yyyy头部入队2个值
目前yyyy在第一个
lrange lllll 1 100 查看lllll队列 从第一个查看1000个
rpush 尾部入队 lllll aaaaa vvvvv
获取队列长度和入队出队
sadd class 1 2 3 6 5 8 创教名字叫class的集合
集合成员是唯一的,不能放同名的值
集合的查看添加
权重值一并取出
有字段有值的字段表
hmset class3 name ding sex man age 14
添加查看删除
save命令后数据库问将会存入指定的文件夹内
然后将文件夹内的文件放入redis目录下重启服务就可以使用数据库
密码
查看密码
config get requirepass
设置密码
config get requirepass “密码”
然后操作就需要密码
输入密码是auth 密码
但是这里设置的是临时密码
客户端设置才是持久密码
或者找到配置文件conf
可以新建配置文件redisconf
然后用配置此文件的配置打开redis
redis-cli
然后就需要输入配置的密码
用到集群的原因是一台服务器不够用
主从模式
可以悬选择升级服务器,选择带宽更多的服务器,或者买一个服务器做集群
集群更加容易实现
有三种模式,主(写)从(读)模式,
因为主服务器负责写的·功能宕机后·1整个服务会挂掉
所以有哨兵机制
哨兵查看到主服务器死了就会去选择一个服务器当主服务器,原来服务器上线当从服务器
一个哨兵对应一个服务器
public function index(){
//php操作redis
//redis类在开启的状态下才能使用 扩展没有开启会提示undefind class
$redis = new \Redis();
//配置redis的服务器端口
$redis->connect('127.0.0.1','6379');
//如有密码则需要配置
// $redis->auth();//输入密码
$redis->set('name','ding');
dump($redis->get('name'));
}
同服务器下可以共同访问到redis文件
高并发和持久化
新建表红包
mysql
先判断数据库中红包数量
这里是判断是否还有红包
代码
namespace app\admin\controller;
use think\Db;
use think\facade\Cache;
class Test
{
public function index(){
//php操作redis
//redis类在开启的状态下才能使用 扩展没有开启会提示undefind class
$redis = new \Redis();
//配置redis的服务器端口
$redis->connect('127.0.0.1','6379');
//如有密码则需要配置
// $redis->auth();//输入密码
$redis->set('name','ding');
dump($redis->get('name'));
}
public function other(){
//tp方式使用redis
//进入config文件夹找到cache打开
//切换缓存类型
$redis = Cache::store('redis_ding');
$redis->set('age',19);
$redis->set("mid",1,30);//定时失效
dump($redis-> get('mid'));
//集合
$redis->sadd('class1','好二篇');
dump($redis->smembers('class1'));
}
//使用模型进行分类查询
public function ss(){
$sql = "SELECT cate_id, COUNT(*) AS order_count FROM tp_article GROUP BY cate_id";
$result = Db::query($sql);
$id = input('id');
foreach($result as $row) {
if($row['cate_id'] == $id) {
foreach($row as $key => $value) {
echo ($key.'='.$value);
}
}
}
}
}