PHP dan REDIS: Bagaimana untuk mencapai penyimpanan data yang berterusan
Pengenalan:
Dalam proses pembangunan web, kita selalunya perlu menyimpan data secara berterusan. Sebagai sistem storan nilai kunci berprestasi tinggi, Redis dapat memenuhi keperluan kami dengan baik. Artikel ini akan memperkenalkan cara menggunakan PHP dan Redis untuk mencapai penyimpanan data yang berterusan.
1. Pemasangan dan konfigurasi Redis
Mengkonfigurasi Redis:
Selepas pemasangan selesai, anda perlu memasukkan fail konfigurasi Redis (redis.conf) untuk melaksanakan beberapa konfigurasi asas.
a) Buka fail redis.conf
vim /etc/redis/redis.conf
b) Konfigurasi kata laluan Redis
Cari dan ubah suai parameter "requirepass" dan tetapkannya kepada kata laluan yang anda mahu:
requirepass your_password
c) Simpan perubahan dan tutup fail.
Mulakan Redis:
Masukkan arahan berikut dalam terminal untuk memulakan Redis:
redis-server
2. Gunakan PHP untuk menyambung ke pelayan Redis
Seterusnya, anda perlu menggunakan PHP untuk menyambung ke pelayan Redis dan melaksanakan membaca dan memproses data dalam storan kod.
Sambung ke pelayan Redis:
Pertama, anda perlu menggunakan kelas Redis
dalam kod untuk membuat instantiate objek Redis dan menyambung ke pelayan Redis: Redis
类来实例化Redis对象,并连接到Redis服务器:
$redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->auth('your_password'); // 如果设置了Redis密码,需要进行身份验证
存储数据到Redis:
在Redis中,我们可以使用set
方法将数据存储到指定的key中。以下是一个示例代码:
$redis->set('my_key', 'my_value');
从Redis中读取数据:
可以使用get
方法从Redis中读取指定的key的值。以下是一个示例代码:
$value = $redis->get('my_key'); echo $value; // 输出:my_value
存储复杂数据类型:
Redis不仅可以存储简单的字符串值,还可以存储复杂的数据类型,比如数组、对象等。我们可以使用serialize
函数将复杂数据类型序列化成字符串,然后再存储到Redis中。示例代码如下:
$data = ['name' => 'John', 'age' => 25]; $redis->set('my_data', serialize($data));
在需要取回数据时,可以使用unserialize
函数将存储的字符串反序列化为原始数据类型。示例代码如下:
$data = unserialize($redis->get('my_data')); print_r($data); // 输出:Array ( [name] => John [age] => 25 )
三、实现数据的持久化存储
上面介绍的是将数据存储到Redis中,并在代码中读取出来。但是当Redis服务器关闭或重启后,数据将会丢失。为了实现数据的持久化存储,我们可以使用Redis的RDB和AOF两种机制。
RDB持久化(快照持久化):
RDB持久化是Redis默认的持久化机制。它会根据一定的时间间隔生成快照文件,将数据以二进制格式保存到磁盘上。在Redis重新启动时,可以从快照文件中还原数据。
a) 配置RDB持久化:
打开redis.conf文件并找到以下配置:
save 900 1 save 300 10 save 60 10000
这些配置表示:在900秒之后,如果至少有1个key发生了变化,则生成一个RDB文件;在300秒之后,如果至少有10个key发生了变化,则生成一个RDB文件;在60秒之后,如果至少有10000个key发生了变化,则生成一个RDB文件。
b) 启用RDB持久化:
将以下配置项的注释符号去掉,即可启用RDB持久化:
save 900 1 save 300 10 save 60 10000
c) 保存并关闭配置文件。
d) 重启Redis服务器。
RDB持久化可以将Redis的内存数据保存到磁盘上,但是在Redis重启后,只能恢复到最后一次生成的RDB文件时的状态。
AOF持久化(追加文件持久化):
AOF持久化会将Redis服务器收到的每个写命令追加到AOF文件的末尾。当Redis服务器重新启动时,它会重新执行AOF文件中的所有写命令,从而还原数据。
a) 配置AOF持久化:
打开redis.conf文件并找到以下配置:
appendonly no appendfilename "appendonly.aof"
将appendonly
配置项的值修改为yes
rrreee
Dalam Redis , kita boleh menggunakan kaedah set
untuk menyimpan data ke dalam kunci yang ditentukan. Berikut ialah contoh kod:
Membaca data daripada Redis:
Anda boleh menggunakan kaedah get
untuk membaca nilai kunci yang ditentukan daripada Redis. Berikut ialah kod sampel:
serialize
untuk menyerikan jenis data kompleks ke dalam rentetan dan kemudian menyimpannya dalam Redis. Kod sampel adalah seperti berikut: nyahsiri
untuk menyahsiri rentetan yang disimpan ke dalam jenis data asal. Kod sampel adalah seperti berikut: appendonly
kepada yes
untuk mendayakan ia AOF kegigihan. 🎜🎜b) Simpan dan tutup fail konfigurasi. 🎜🎜c) Mulakan semula pelayan Redis. 🎜🎜🎜🎜Kesimpulan: 🎜Artikel ini memperkenalkan cara menggunakan PHP dan Redis untuk mencapai penyimpanan data yang berterusan. Dengan mengkonfigurasi mekanisme kegigihan RDB dan AOF Redis, anda boleh memastikan bahawa data masih tersedia selepas pelayan Redis dimulakan semula. Pada masa yang sama, melalui penjelasan kod sampel, pembaca boleh mempunyai pemahaman yang lebih jelas tentang cara menggunakan PHP dan Redis untuk penyimpanan data dalam projek sebenar. 🎜🎜Rujukan: 🎜🎜🎜Tapak web rasmi Redis: https://redis.io/🎜🎜Kod sumber Redis: https://github.com/redis/redis🎜🎜Atas ialah kandungan terperinci PHP dan REDIS: Bagaimana untuk mencapai penyimpanan data yang berterusan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!