PHP操作Redis数据库常用方法(总结)
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis支持的数据类型有 Stirng(字符串)
, List(列表
)
, Hash(字典)
, Set(集合)
, Sorted Set(有序集合)
;
要让php能用上redis,首先就得安装redis扩展。
1.安装redis
git下载地址
https://github.com/MSOpenTech/redis/releases
2.测试redis
windows 运行(快捷键:windows键+R键),输入【cmd】命令,进入DOC操作系统窗口;
进入redis安装目录使用命令
2.1开启redis守护进程(进入redis安装目录)
redis-server.exe redis-windows-conf
2.2进入redis客户端(进入redis安装目录)
redis-cli.exe
3.安装php的redis扩展
下载地址
https://pecl.php.net/package/redis
根据phpinfo()信息选择适当的redis扩展压缩包
4.将redis扩展包的php_redis.dll和php_redis.pdb两个文件放在ext文件夹
5.修改php.ini文件
extension=php_redis.dll
6.验证是否开启redis扩展
查看phpinfo()信息,搜索redis
7.php连接并测试redis数据库(记得开启redis服务)
新建test.php
<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $redis->set('name','klc'); echo $redis->get('name'); ?>
对数据类型的操作
Strng(字符串):
<?php // 设置一个字符串的值 $redis->set('cat', 111); //获取一个字符串的值 echo $redis->get('cat'); // 111 // 重复set $redis->set('cat', 222); echo $redis->get('cat'); // 222
List(列表):
//列表 //存储数据到列表中 $redis->lpush('list', 'html'); $redis->lpush('list', 'css'); $redis->lpush('list', 'php'); //获取列表中所有的值 $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //从右侧加入一个 $redis->rpush('list', 'mysql'); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //从左侧弹出一个 $redis->lpop('list'); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //从右侧弹出一个 $redis->rpop('list'); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; // 结果 // Array ( [0] => php [1] => css [2] => html ) // Array ( [0] => php [1] => css [2] => html [3] => mysql ) // Array ( [0] => css [1] => html [2] => mysql ) // Array ( [0] => css [1] => html )
<?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //列表 //存储数据到列表中 $redis->lpush('list', 'html'); $redis->lpush('list', 'css'); $redis->lpush('list', 'php'); $redis->lpush('list', 'mysql'); $redis->lpush('list', 'javascript'); $redis->lpush('list', 'ajax'); //获取列表中所有的值 $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //获取列表的长度 $length = $redis->lsize('list'); echo $length;echo '<br>'; //返回列表key中index位置的值 echo $redis->lget('list', 2);echo '<br>'; echo $redis->lindex('list', 2);echo '<br>'; //设置列表中index位置的值 echo $redis->lset('list', 2, 'linux');echo '<br>'; $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //返回key中从start到end位置间的元素 $list = $redis->lrange('list', 0, 2); print_r($list);echo '<br>'; $list = $redis->lgetrange('list', 0, 2); print_r($list);echo '<br>'; //截取链表中start到end的元素 //截取列表后列表发生变化,列表保留截取的元素,其余的删除 $list = $redis->ltrim('list', 0, 1); print_r($list);echo '<br>'; $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; // 结果 // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css [5] => html ) // 6 // mysql // mysql // 1 // Array ( [0] => ajax [1] => javascript [2] => linux [3] => php [4] => css [5] => html ) // Array ( [0] => ajax [1] => javascript [2] => linux ) // Array ( [0] => ajax [1] => javascript [2] => linux ) // 1 // Array ( [0] => ajax [1] => javascript )
<?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //列表 //存储数据到列表中 $redis->lpush('list', 'html'); $redis->lpush('list', 'html'); $redis->lpush('list', 'html'); $redis->lpush('list', 'css'); $redis->lpush('list', 'php'); $redis->lpush('list', 'mysql'); $redis->lpush('list', 'javascript'); $redis->lpush('list', 'html'); $redis->lpush('list', 'html'); $redis->lpush('list', 'html'); $redis->lpush('list', 'ajax'); //获取列表中所有的值 $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //删除列表中count个值为value的元素 //从左向右删 $redis->lrem('list', 'html', 2); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //从右向左删 $redis->lrem('list', 'html', -2); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //删除所有 $redis->lrem('list', 'html', 0); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; // 结果 // Array ( [0] => ajax [1] => html [2] => html [3] => html [4] => javascript [5] => mysql [6] => php [7] => css [8] => html [9] => html [10] => html ) // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html [7] => html [8] => html ) // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html ) // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css )
Hash(字典):
<?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //字典 //给hash表中某个key设置value //如果没有则设置成功,返回1,如果存在会替换原有的值,返回0,失败返回0 echo $redis->hset('hash', 'cat', 'cat');echo '<br>'; echo $redis->hset('hash', 'cat', 'cat');echo '<br>'; echo $redis->hset('hash', 'cat', 'cat1');echo '<br>'; echo $redis->hset('hash', 'dog', 'dog');echo '<br>'; echo $redis->hset('hash', 'bird', 'bird');echo '<br>'; echo $redis->hset('hash', 'monkey', 'monkey');echo '<br>'; //获取hash中某个key的值 echo $redis->hget('hash', 'cat');echo '<br>'; //获取hash中所有的keys $arr = $redis->hkeys('hash'); print_r($arr);echo '<br>'; //获取hash中所有的值 顺序是随机的 $arr = $redis->hvals('hash'); print_r($arr);echo '<br>'; //获取一个hash中所有的key和value 顺序是随机的 $arr = $redis->hgetall('hash'); print_r($arr);echo '<br>'; //获取hash中key的数量 echo $redis->hlen('hash');echo '<br>'; //删除hash中一个key 如果表不存在或key不存在则返回false echo $redis->hdel('hash', 'dog');echo '<br>'; var_dump($redis->hdel('hash', 'rabbit'));echo '<br>'; // 结果 // 1 // 0 // 0 // 1 // 1 // 1 // cat1 // Array ( [0] => cat [1] => dog [2] => bird [3] => monkey ) // Array ( [0] => cat1 [1] => dog [2] => bird [3] => monkey ) // Array ( [cat] => cat1 [dog] => dog [bird] => bird [monkey] => monkey ) // 4 // 1 // int(0) <?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //字典 //批量设置多个key的值 $arr = [1=>1, 2=>2, 3=>3, 4=>4, 5=>5]; $redis->hmset('hash', $arr); print_r($redis->hgetall('hash'));echo '<br>'; // 批量获得额多个key的值 $arr = [1, 2, 3, 5]; $hash = $redis->hmget('hash', $arr); print_r($hash);echo '<br>'; //检测hash中某个key知否存在 echo $redis->hexists('hash', '1');echo '<br>'; var_dump($redis->hexists('hash', 'cat'));echo '<br>'; print_r($redis->hgetall('hash'));echo '<br>'; //给hash表中key增加一个整数值 $redis->hincrby('hash', '1', 1); print_r($redis->hgetall('hash'));echo '<br>'; //给hash中的某个key增加一个浮点值 $redis->hincrbyfloat('hash', 2, 1.3); print_r($redis->hgetall('hash'));echo '<br>'; //结果 // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) // Array ( [1] => 1 [2] => 2 [3] => 3 [5] => 5 ) // 1 // bool(false) // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) // Array ( [1] => 2 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) // Array ( [1] => 2 [2] => 3.3 [3] => 3 [4] => 4 [5] => 5 )
Set(集合):
<?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //集合 // 添加一个元素 echo $redis->sadd('set', 'cat');echo '<br>'; echo $redis->sadd('set', 'cat');echo '<br>'; echo $redis->sadd('set', 'dog');echo '<br>'; echo $redis->sadd('set', 'rabbit');echo '<br>'; echo $redis->sadd('set', 'bear');echo '<br>'; echo $redis->sadd('set', 'horse');echo '<br>'; // 查看集合中所有的元素 $set = $redis->smembers('set'); print_r($set);echo '<br>'; //删除集合中的value echo $redis->srem('set', 'cat');echo '<br>'; var_dump($redis->srem('set', 'bird'));echo '<br>'; $set = $redis->smembers('set'); print_r($set);echo '<br>'; //判断元素是否是set的成员 var_dump($redis->sismember('set', 'dog'));echo '<br>'; var_dump($redis->sismember('set', 'bird'));echo '<br>'; //查看集合中成员的数量 echo $redis->scard('set');echo '<br>'; //移除并返回集合中的一个随机元素(返回被移除的元素) echo $redis->spop('set');echo '<br>'; print_r($redis->smembers('set'));echo '<br>'; // 结果 // 1 // 0 // 1 // 1 // 1 // 1 // Array ( [0] => rabbit [1] => cat [2] => bear [3] => dog [4] => horse ) // 1 // int(0) // Array ( [0] => dog [1] => rabbit [2] => horse [3] => bear ) // bool(true) // bool(false) // 4 // bear // Array ( [0] => dog [1] => rabbit [2] => horse )
<?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //集合 $redis->sadd('set', 'horse'); $redis->sadd('set', 'cat'); $redis->sadd('set', 'dog'); $redis->sadd('set', 'bird'); $redis->sadd('set2', 'fish'); $redis->sadd('set2', 'dog'); $redis->sadd('set2', 'bird'); print_r($redis->smembers('set'));echo '<br>'; print_r($redis->smembers('set2'));echo '<br>'; //返回集合的交集 print_r($redis->sinter('set', 'set2'));echo '<br>'; //执行交集操作 并结果放到一个集合中 $redis->sinterstore('output', 'set', 'set2'); print_r($redis->smembers('output'));echo '<br>'; //返回集合的并集 print_r($redis->sunion('set', 'set2'));echo '<br>'; //执行并集操作 并结果放到一个集合中 $redis->sunionstore('output', 'set', 'set2'); print_r($redis->smembers('output'));echo '<br>'; //返回集合的差集 print_r($redis->sdiff('set', 'set2'));echo '<br>'; //执行差集操作 并结果放到一个集合中 $redis->sdiffstore('output', 'set', 'set2'); print_r($redis->smembers('output'));echo '<br>'; // 结果 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse ) // Array ( [0] => bird [1] => dog [2] => fish ) // Array ( [0] => bird [1] => dog ) // Array ( [0] => dog [1] => bird ) // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish ) // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish ) // Array ( [0] => horse [1] => cat ) // Array ( [0] => horse [1] => cat )
Sorted Set(有序集合):
<?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //有序集合 //添加元素 echo $redis->zadd('set', 1, 'cat');echo '<br>'; echo $redis->zadd('set', 2, 'dog');echo '<br>'; echo $redis->zadd('set', 3, 'fish');echo '<br>'; echo $redis->zadd('set', 4, 'dog');echo '<br>'; echo $redis->zadd('set', 4, 'bird');echo '<br>'; //返回集合中的所有元素 print_r($redis->zrange('set', 0, -1));echo '<br>'; print_r($redis->zrange('set', 0, -1, true));echo '<br>'; //返回元素的score值 echo $redis->zscore('set', 'dog');echo '<br>'; //返回存储的个数 echo $redis->zcard('set');echo '<br>'; //删除指定成员 $redis->zrem('set', 'cat'); print_r($redis->zrange('set', 0, -1));echo '<br>'; //返回集合中介于min和max之间的值的个数 print_r($redis->zcount('set', 3, 5));echo '<br>'; //返回有序集合中score介于min和max之间的值 print_r($redis->zrangebyscore('set', 3, 5));echo '<br>'; print_r($redis->zrangebyscore('set', 3, 5, ['withscores'=>true]));echo '<br>'; //返回集合中指定区间内所有的值 print_r($redis->zrevrange('set', 1, 2));echo '<br>'; print_r($redis->zrevrange('set', 1, 2, true));echo '<br>'; //有序集合中指定值的socre增加 echo $redis->zscore('set', 'dog');echo '<br>'; $redis->zincrby('set', 2, 'dog'); echo $redis->zscore('set', 'dog');echo '<br>'; //移除score值介于min和max之间的元素 print_r($redis->zrange('set', 0, -1, true));echo '<br>'; print_r($redis->zremrangebyscore('set', 3, 4));echo '<br>'; print_r($redis->zrange('set', 0, -1, true));echo '<br>'; //结果 // 1 // 0 // 0 // 0 // 0 // Array ( [0] => cat [1] => fish [2] => bird [3] => dog ) // Array ( [cat] => 1 [fish] => 3 [bird] => 4 [dog] => 4 ) // 4 // 4 // Array ( [0] => fish [1] => bird [2] => dog ) // 3 // Array ( [0] => fish [1] => bird [2] => dog ) // Array ( [fish] => 3 [bird] => 4 [dog] => 4 ) // Array ( [0] => bird [1] => fish ) // Array ( [bird] => 4 [fish] => 3 ) // 4 // 6 // Array ( [fish] => 3 [bird] => 4 [dog] => 6 ) // 2 // Array ( [dog] => 6 )
更多相关php知识,请访问php教程!
Atas ialah kandungan terperinci PHP操作Redis数据库常用方法(总结). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Masa depan PHP akan dicapai dengan menyesuaikan diri dengan trend teknologi baru dan memperkenalkan ciri -ciri inovatif: 1) menyesuaikan diri dengan pengkomputeran awan, kontena dan seni bina microservice, menyokong Docker dan Kubernetes; 2) memperkenalkan pengkompil JIT dan jenis penghitungan untuk meningkatkan prestasi dan kecekapan pemprosesan data; 3) Berterusan mengoptimumkan prestasi dan mempromosikan amalan terbaik.

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

PHP tidak mati, tetapi sentiasa menyesuaikan diri dan berkembang. 1) PHP telah menjalani beberapa lelaran versi sejak tahun 1994 untuk menyesuaikan diri dengan trend teknologi baru. 2) Ia kini digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan bidang lain. 3) Php8 memperkenalkan pengkompil JIT dan fungsi lain untuk meningkatkan prestasi dan pemodenan. 4) Gunakan OPCACHE dan ikut piawaian PSR-12 untuk mengoptimumkan prestasi dan kualiti kod.

Menggunakan Arahan Redis memerlukan langkah -langkah berikut: Buka klien Redis. Masukkan arahan (nilai kunci kata kerja). Menyediakan parameter yang diperlukan (berbeza dari arahan ke arahan). Tekan Enter untuk melaksanakan arahan. Redis mengembalikan tindak balas yang menunjukkan hasil operasi (biasanya OK atau -r).

Langkah -langkah untuk memulakan pelayan Redis termasuk: Pasang Redis mengikut sistem operasi. Mulakan perkhidmatan Redis melalui Redis-server (Linux/macOS) atau redis-server.exe (Windows). Gunakan redis-cli ping (linux/macOS) atau redis-cli.exe ping (windows) perintah untuk memeriksa status perkhidmatan. Gunakan klien Redis, seperti redis-cli, python, atau node.js untuk mengakses pelayan.

Cara Mengosongkan Data Redis: Gunakan perintah Flushall untuk membersihkan semua nilai utama. Gunakan perintah flushdb untuk membersihkan nilai utama pangkalan data yang dipilih sekarang. Gunakan Pilih untuk menukar pangkalan data, dan kemudian gunakan FlushDB untuk membersihkan pelbagai pangkalan data. Gunakan perintah DEL untuk memadam kunci tertentu. Gunakan alat REDIS-CLI untuk membersihkan data.

Untuk membaca giliran dari Redis, anda perlu mendapatkan nama giliran, membaca unsur -unsur menggunakan arahan LPOP, dan memproses barisan kosong. Langkah-langkah khusus adalah seperti berikut: Dapatkan nama giliran: Namakannya dengan awalan "giliran:" seperti "giliran: my-queue". Gunakan arahan LPOP: Keluarkan elemen dari kepala barisan dan kembalikan nilainya, seperti LPOP Queue: My-Queue. Memproses Baris kosong: Jika barisan kosong, LPOP mengembalikan nihil, dan anda boleh menyemak sama ada barisan wujud sebelum membaca elemen.
