一个通过 内存 存取数据的 key-value
数据库
常用的是它的链表与集合的数据结构
当然除了 redis
,我们平时的应用离不开它与 Mysql
的结合
用来提速,因为内存读取比硬盘读取 速度要快很多
里面只放使用频繁、用户操作量较大的数据、用户近期使用的数据
短期内经常查询的数据[热数据],通过 redis
查; 不常用部分的[冷数据],通过 Mysql
查
队列 -> 消息队列
原子计数 -> 生成自增 ID
数据存于内存中 -> 用作缓存
...
先存入
Mysql
再存入Redis
能保证数据实时存入,但
Mysql
写的压力较大先存入
Redis
再定一个时间间隔去拉取完成当前操作的时间戳前,将期间所有未存入Mysql
的数据,存如Mysql
不能保证遇到特殊情况时,防止
Redis
自身也未运用实时备份时的数据丢失的情景
特点:简洁,常用于存用户信息
常用操作方法
常用方式,类比 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 "帐号或者密码错误";
}
特点:常用来做消息推送
这里的消息推送是指,判断是否发送成功,系统成功接收到消息,就返回确认信息给发送端
然后就把推送的过程留给服务器,在后台进行
zsort
实现),越优先常用队列解决优先级的问题,如
lpush
可以形成一个从左往右的队列
rpush
可以使得一个新的数据插入队列的顶部,用于解决进程优先级的问题
注意:队列一般不给予定点删除功能
特点:交集、并集、差集、不重复,可以通过 sort
排序
1)粉丝粉主关系
2)防止事件重复
特点:类似于二维数组的存取
特点:排序方便,如果熟练set方法的排序,这个就不用研究了
目前我做了一个小案列关于具体操作的,微博逻辑大概就是这个样子
链接:http://pan.baidu.com/s/1slMSrqH 密码:9u5b
static $r; // 初始的时候定义为静态变量
$r = new Redis();
$r->connect("127.0.0.1","6379");
// 如果有密码
// $r->auth("密码");
$r->select(1);
如果是查询的 string
型,模糊查找 user:uid:$uid 的数据,查找 user: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
的安装后的配置文件 redis.conf
vim /usr/local/redis/etc/redis.conf
appendfsync everysec
save 900 1
save 300 10
save 60 10000
比如,第一行,表示900秒内,如果超过1个key被修改,就发起快照保存
后两行同理,这三行表示三种方案,不同情况不同处理
备份的数据名称
dbfilename dump.rdb
备份数据的路径
dir /usr/local/redis/var
此间要求:本地的 redis
版本,不能高于服务器版本的 redis
,否则 dump.rdb
不能被读取
为了防止意外发生,请各个服务器统一 redis
版本!!!
iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
service iptables save
vim /usr/local/redis/etc/redis.conf
# requirepass foobared
# 配置该服务器密码
requirepass hlz
配置步骤3)中的密码
设置 slave
权限:一般情况=>从服务器=>只读,不可写
slave-read-only yes
在 redis.conf
中,找到
slaveof <masterip> <masterport>
示例如下,填写对应的主服务器的ip与端口
slaveof 115.159.56.128 6379
再在 redis.conf
中,找到
masterauth <master-password>
输入主服务器的密码
masterauth hlz
现在就完成主从配置了
关于主从配置的分布式使用,我们可以用http://blog.csdn.net/cywosp/article/details/23397179/
待有空时,再更新
我建议在 windows
下编程, 通过与虚拟机共享文件夹,完成虚拟机环境下的实时测试
http://blog.csdn.net/myboyli/article/details/52082050
待更新
评论列表点此评论