Redis学习笔记(二) ---- PHP操作Redis各数据类型
Redis
一、使用PHP操作Redis存储系统中的各类数据类型方法
1.String(字符串)操作
1 <?php 2 3 // 1. 实例化 4 $redis = new Redis; 5 6 // 2. 连接 redis 7 $redis->connect('localhost',6379); 8 9 // 3. 选择数据库 10 $redis->select(15); 11 12 // 字符串类型 13 // 添加数据 14 $redis->set('name','张三'); 15 // 设置添加数据的生命周期 16 $redis->set('age','李四',10); 17 // 添加多个数据 18 $arr = ['name'=>'李四','age'=>18]; 19 $redis->mset($arr); 20 // 增加一个新值(不存在的) 21 $redis->setnx('height','180cm'); 22 // 删除数据 23 $redis->delete('name'); 24 // 修改数据(自增 递减) 25 $redis->incr('num'); 26 $redis->incrby('num',12); 27 $redis->decr('num'); 28 $redis->decrby('num',10); 29 // 获取值 30 // 获取单个值 31 $res = $redis->get('num'); 32 var_dump($res); 33 // // 获取多个值 34 $res = $redis->mget(['num','age','height']);
2.List(链表 / 列表)操作
1 <?php 2 3 // 实例化 redis 4 $redis = new Redis; 5 6 // 连接 redis 服务器 7 $redis->connect('localhost',6379); 8 9 // 选择数据库 10 $redis->select(1); 11 // redis 中 list 列表数据的处理 12 // 添加数据 13 $redis->lpush('list1','苹果'); 14 $redis->lpush('list1','香蕉'); 15 // 从右侧添加数据 16 $redis->rpush('list1','apple'); 17 $redis->rpush('list1','小米'); 18 19 // 删除数据 20 // 将数据弹出列表 21 $redis->lpop('list1'); 22 $redis->rpop('list1'); 23 // 将数据移出列表 24 $redis->lrem('list1','苹果',2); 25 26 // 修改数据 27 $redis->lset('list1', 1,'苹果'); 28 $redis->lset('list1',-2,'apple'); 29 $redis->rpoplpush('list1','list2'); 30 31 // 查询数据 32 $res = $redis->lindex('list1',0); 33 $res = $redis->lindex('list2',-1); 34 $res = $redis->lrange('list2',0,-1); 35 $res = $redis->lsize('list1'); 36 var_dump($res);
3.Set(集合)操作
1 <?php 2 3 // 实例化 4 $redis = new Redis(); 5 // 连接 redis 6 $redis->connect('localhost',6379); 7 // 选择数据库 8 $redis->select(1); 9 // 对集合操作 10 // 增加数据(集合中的数据不能重复) 11 $redis->sadd('s1','a','b','c','d'); 12 13 // 删除数据 14 $redis->srem('s1','a'); 15 16 // 修改集合成员 17 $redis->smove('s1','s2','c'); 18 19 // 查询数据 20 $res = $redis->smembers('s1'); 21 $res = $redis->ssize('s1'); 22 $res = $redis->srandmember('s1'); 23 24 // 两集合的交集 25 $res = $redis->sinter('s1','s2'); 26 // 两集合的差集 27 $res = $redis->sdiff('s1','s2'); 28 // 两集合的并集 29 $res = $redis->sunion('s1','s2'); 30 // 检测是否是集合成员 31 $res = $redis->sismember('s1','a'); 32 var_dump($res);
4.Zset(有序集合)操作
1 <?php 2 3 // 实例化 4 $redis = new Redis; 5 // 连接 redis 6 $redis->connect('localhost',6379); 7 // 对有序集合的操作 8 // 添加数据 9 $redis->zadd('z1',1,'张三'); 10 $redis->zadd('z1',2,'李四'); 11 $redis->zadd('z1',3,'王五'); 12 $redis->zadd('z1',4,'赵六'); 13 $redis->zadd('z1',5,'田七'); 14 $redis->zadd('z1',20,'王八'); 15 $redis->zadd('z1',50,'敬酒'); 16 $redis->zadd('z1',100,'牛十'); 17 18 // 删除数据 19 $redis->zrem('z1','敬酒'); 20 21 // 修改数据的分数 22 $redis->zincrby('z1',3,'王五'); 23 24 // 获取数据 25 $res = $redis->zrange('z1',0,-1); 26 $res = $redis->zrevrange('z1',0,-1); 27 $res = $redis->zrangebyscore('z1',10,50,['withscore'=>true,'limit'=>[0,3]]);//根据分数获取元素并可限制取出元素数量,正序 28 $res = $redis->zrevrangebyscore('z1',50,10,['withscore'=>true,'limit'=>[0,3]]);//根据分数获取元素并可限制取出元素数量,倒数 29 // 获取元素个数 30 $res = $redis->zcount('z1',10,50); 31 $res = $redis->zsize('z1'); 32 $res = $redis->zrank('z1','王八'); 33 $res = $redis->zscore('z1','王八'); 34 var_dump($res);
5.Hash(哈希型)操作
1 <?php 2 3 // 实例化 4 $redis = new Redis; 5 // 连接 redis 6 $redis->connect('localhost',6379); 7 // 对哈希数据操作 8 // 添加数据 9 $redis->hset('h1','age',80); 10 $redis->hmset('h1',['sex'=>'man','height'=>'180cm']); 11 12 // 添加递增 13 $redis->hincrby('h1','num',1); 14 15 // 删除数据 16 $redis->hdel('h1','name'); 17 18 // 查询单个 hash 值 19 $res = $redis->hget('h1','age'); 20 // 批量查询 hash 值 21 $res = $redis->hmget('h1',['age','sex','height']); 22 // 获取所有 hash 值 23 $res = $redis->hgetAll('h1'); 24 // 获取 hash 表元素总个数 25 $res = $redis->hlen('h1'); 26 // 获取 hash 表元素所有键名 27 $res = $redis->hkeys('h1'); 28 // 获取 hash 表元素所有值 29 $res = $redis->hvals('h1'); 30 // 判断 hash 表中是否存在某键名 31 $res = $redis->hexists('h1','name'); 32 var_dump($res);
6.操作Redis数据的通用方法
1 <?php 2 3 // 实例化 4 $redis = new Redis; 5 // 连接 redis 6 $redis->connect('localhost',6379); 7 // 清空当前数据库 8 $redis->flushdb(); 9 // 清空 redis 所有数据库数据 10 $redis->flushAll(); 11 12 // 设置 / 修改数据 13 $redis->set('name','admin'); 14 // 设置该键值的生命周期 15 $redis->expire('name',40); 16 // 获取某键名生命周期 17 $res = $redis->ttl('name'); 18 19 // 检测是否存在某数据 20 $res = $redis->exists('name'); 21 // 获取当前数据库所有键 22 $res = $redis->keys('*'); 23 var_dump($res);