Redis小结

Redis

简介

1.一个通过 内存 存取数据的key-value数据库

2.常用的是它的链表与集合的数据结构

3.当然除了redis,我们平时的应用离不开它与Mysql的结合,

先存入mysql再存入redis

主要功能

用来提速,因为内存读取比硬盘读取 速度要快很多

字符串 string

特点:简洁,常用于存用户信息
常用操作方法

key-value数据库设计

常用方式,类比Mysql数据库设计,表名>字段名>字段值

示例一:user表,里面的字段有username,uid,password  带有$表示php中的变量
先定一个自增变量 $uid=$r->incr("uid");
Key                      Value              备注
user:uid:$uid:username   $username          根据用户uid查名字
user:uid:$uid:password	 $password          根据用户uid查密码
user:$username           $uid               根据用户名查密码

场景:已知用户名$username,密码$password,查帐号密码是否正确
步骤一,
$uid=$r->get("user:$username");
步骤二:其中*表示匹配任意多个字符
$find_key = $r->keys("user:uid:$uid*");
if(empty($find_key)){
    echo "帐号或者密码错误";//帐号不存在
}else{
$nameMix="user:".$uid.":username";
$pwdMix= "user:".$uid.":pwd" ;
$get_user_info=array(
     $nameMix,
     $pwdMix
);
$find=$r->mget($get_user_info);
if($name == $find[0] && $pwd  == $find[1]){
    echo "欢迎您,$username!";
}else{
    echo "帐号或者密码错误";
}
链表 list

特点:常用来做消息推送

这里的消息推送是指,判断是否发送成功,系统成功接收到消息,就返回确认信息给发送端
然后就把推送的过程留给服务器,在后台进行。[推送可以用到优先级,关注越早(可以通过zsort实现),越优先]

常用队列解决优先级的问题,例如

lpush可以形成一个从左往右的队列
rpush可以使得一个新的数据插入队列的顶部,用于解决进程优先级的问题

注意:队列一般不给予定点删除功能,比如新浪微博,你取消关注后,它依然

集合 set

特点:交集、并集、差集、不重复,可以通过sort排序

1)粉丝粉主关系
2)防止事件重复
哈希 hash

特点:类似于二维数组的存取

排序集 zset

特点:排序方便,如果熟练set方法的排序,这个就不用研究了

常用操作

目前我做了一个小案列关于具体操作的,微博逻辑大概就是这个样子
链接:http://pan.baidu.com/s/1slMSrqH 密码:9u5b

更新时间 2016年8月2日 23:48:06
这里讲php中常用方法
初始的时候定义静态变量 $r
$r = new Redis();
$r->connect("127.0.0.1",“6379”);
//如果有密码
//$r->auth("密码");
$r->select(1);

如果是查询的string型,模糊查找user:uid: uiduser:uid: uid:age的各自年龄

$find_array=$r->keys("user:uid:*");
$count=count($find_array);//找到到的个数
for($i=0 ; $i < $count ; $i++){
    $keyMix[$i]="user:uid:$find_array[$i]:age";
}
$result_array=$r->mget($find_array);
print_r($result_array);

其他类型的常用尝试

Redis的AOF

进入redis的安装后的配置文件redis.conf

vim /usr/local/redis/etc/redis.conf
0)设置AOF类型,这里设置精准持久化(每次数据变更都会自动备份,当数据量大的时候换类型)
appendfsync everysec
1)你应该会看到
save 900 1
save 300 10
save 60 10000

比如,第一行,表示900秒内,如果超过1个key被修改,就发起快照保存

后两行同理,这三行表示三种方案,不同情况不同处理

2)你应该会看到

备份的数据名称

dbfilename dump.rdb

备份数据的路径

dir /usr/local/redis/var
3)如果你是在本地输入的数据,想将dump.rdb文件弄到服务器上

此间要求:本地的redis版本,不能高于服务器版本的redis,否则dump.rdb不能被读取

主从配置

为了防止意外发生,请各个服务器统一redis版本!!!

1) 开放服务器对应的redis端口
iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
service iptables save
2) 进入redis的安装后的配置文件redis.conf
vim /usr/local/redis/etc/redis.conf
3) 找到# requirepass foobared这行下面添加密码,比如设为hlz
    # requirepass foobared
    # 配置该服务器密码
    requirepass hlz
4) 配置主服务器(master)
主服务器(115.159.56.128:6379)
  1. 配置步骤3)中的密码

  2. 设置slave权限:一般情况=>从服务器=>只读,不可写

    slave-read-only yes

从服务器
  1. 在redis.conf中,找到

    # slaveof <masterip> <masterport>
    # 示例如下,填写对应的主服务器的ip与端口
    slaveof 115.159.56.128 6379
    
  2. 再在redis.conf中,找到
    # masterauth
    # 输入主服务器的密码
    masterauth hlz
    现在就完成主从配置了。

关于主从配置的分布式使用,我们可以用一致哈希算法
http://blog.csdn.net/cywosp/article/details/23397179/

待更新

解决跨域请求

待有空时,再更新

后续:建议相关

我建议在windows下,因为编译器更强大,

Windows下安装redis环境讲解
http://blog.csdn.net/myboyli/article/details/52082050
Linux下安装redis环境讲解
    待更新
php操作redis的函数总结
http://blog.csdn.net/myboyli/article/details/52090452
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值