美文网首页
Redis上手及Redis在PHP中使用

Redis上手及Redis在PHP中使用

作者: 爱写Bug的程序猿 | 来源:发表于2019-04-11 22:50 被阅读0次

什么是Redis

Redis是一个内存高速缓存数据库,可持久化。

缓存:

  • 数据缓存
  • 页面缓存

默认:

  • 端口:6379

Redis安装

1、解压redis

tar zxvf redis-x.x.x.tar.gz

2、编译redis

cd redis-x.x.x
make

3、拷贝文件

cd src
cp redis.conf /usr/local/redis
mkdir /usr/local/redis
cp redis-cli redis-server /usr/local/redis

Redis脚本文件

  • redis-cli 终端操作脚本
  • redis-server 启动服务脚本
  • redis-benchmark 压力测试
  • redis-check-aof / redis-check-dump 备份检测

启动Redis

vi redis.conf
# 打开redis的配置文件
# 修改 136 daemonize yes
# daemonize表示是否后台启动
./redis-server redis.conf
# 守护启动redis

简单使用Redis

./redis-cli
# 启动终端控制

set <变量> <值>
# 存储值
get <变量>
# 读取值

命名规则

key

除了回车与空格都可以,长度不做要求。

常用Redis命令

  • exists <key> 查询key是否存在
  • type <key> 查询key的类型
  • keys <key | *> 返回匹配的key的列表
  • del <key> 删除key
  • rename <old> <new> 更改key的名称
  • dbsize 返回当前数据库的key的数量
  • expire <key> <seconds> 设置key的有效时间(s)
  • ttl <key> 返回当前key的剩余时间(s)
  • select <dbindex> 选择当前的数据库(默认:0号数据库)设置最大数据库可以在redis.conf下的databases来修改
  • move <key> <dbindex> 将key移动到指定的数据库
  • flushdb 删除当前数据库的所有key
  • flushall 删除所有数据库的所有key

Redis的基本类型

String

字符串类型

操作

set <key> <value>
#设置key
get <key> 
#取key的值
mset <key> <value> [<key2> <value2> ..]
#设置多个key
mget <key> [<key2> ..]
#取多个key
incr <key> 
#对key的值+1,并返回
decr <key>
#对key的值-1,并返回
incrby <key> <n> 
#对key的值加n
decrby <key> <n>
#对key的值减n
append <key> <value> 
#对key的值连接一个value
substr <key> <start> <end>
#对key的值进行截取操作

List

就是一个双向链表

操作

lpush <key> <value>
#向key的最左边添加一个元素
rpush <key> <value>
#向key的最右边添加一个元素
rpop <key>
#删除key的最右边的一个元素
lpop <key>
#删除key的最左边的一个元素
lrange <key> <start> <end>
#提取从左边开始将key中start的位置到end的位置的元素
llen <key>
#返回链表的长度
ltrim <key> <start> <end>
#保留链表key中start到end元素

Set

set是string类型的无序集合。

最大包含2^32 -1个元素。

操作

sadd <key> <string>
#为key集合添加一个元素string
sinter <key> <key>
#求两个集合的交集
sunion <key> <key>
#求两个集合的并集
sdiff <key1> <key2>
#求key1-key2的差集
srem <key> <string>
#移除指定的元素
smove <key1> <key2> <string>
#从key1中删除string,并在key2中增加这个string
scard <key>
#返回key中元素的个数
sismember <key> <string>
#返回string元素是否存在与key中
smembers <key>
#无序显示key中的所有元素

SortSet

排序集合。

数据结构

(w,i)i:id w:权

操作

zadd <key> <w> <id>
#插入一个id与他的权值
zrem <key> <id>
#删除key中的id
zremrangebyrank <key> <min> <max>
#先从小到大排序,然后删除min到max的元素
zrevrange <key> <start> <end>
#降序显示key中从start到end范围的数据
zrange <key> <start> <end>
#同上,升序显示
zincrby <key> <incr> <id>
#按指定的incr对id对应的w进行增加
zrank <key> <id>
#先从小到大排序,然后返回id对应的下标
zrevrank <key> <id>
#同上,从大到小
zcard <key>
#返回元素的个数
zscore <key> <id>
#返回id 的w值

hash

哈希数据类型,与mysql中的一条记录很像

操作

hset <key> <field> <value>
#设置key中field的value值
hget <key> <field>
#读取key中field的值
hmset <key> <field1> <value1> ....
#设置多个field
hmset <key> <field1> <field2>
#读取多个
hincrby <key> <field> <integer> 
#增加值
hexists <key> <field>
#检测field是否存在
hdel <key> <field>
#删除指定的field
hlen <key> <field>
#返回field的个数
hkeys key
#返回hash的所有field
hvals key 
#返回所有的value
hgetall key
#返回所有的field与value

持久化

将内存中的数据保存到硬盘里就叫做持久化。

snap shotting 快照持久化

默认开启,一次性全部保存到硬盘。

文件:dump.rdb

保存频率

save 900 1 #15分 有1个修改就保存一次

save 300 10 #5分 有10个修改就保存一次

save 60 10000 #1分 有10000次修改就保存一次

手动快照

redis-cli bgsave

append only file AOF持久化

又称精细持久化,每秒保存一次,但只保存规定时间的数据。

保存原理是对用户的写指令进行保存。

默认关闭。

开启AOF持久化(会清空redis内部的数据)

配置

appendonly yes

执行命令

ps -A |grep redis

kill -9 <进程号>

频率

默认1s一次

AOF优化

redis-cli bgrewriteaof
#优化压缩

关闭服务并保存

redis-cli shutdown

主从模式

主Redis负责写入

从Redis负责读出

配置

第一步:打开redis.conf
第二步:修改slaveof ip port
    设置主人服务的ip与端口

PHP扩展Redis

安装PHP的Redis扩展

文件:

  • autoconf
  • phpredis

安装:

第一步:安装autoconf
./configure && make && make install
第二步:配置phpredis
./configure --with-php-config=/usr/local/local/php/bin/php-config
第三步:安装phpredis
make && make install
第四步:打开php/lib/pbp.ini
修改 extension=redis.so

PHP中使用redis

类:Redis

$redis = new Redis();
//实例化redis
$redis->connect('ip',port);
//连接redis服务器
$redis->select(5);
//选择第5个数据库
$redis->set(key,value);
//存储一个key的
$redis->get(key);
//读取一个key

相关文章

网友评论

      本文标题:Redis上手及Redis在PHP中使用

      本文链接:https://www.haomeiwen.com/subject/jgyfwqtx.html