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‘]);

PHP操作Redis中String数据类型

  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);

PHP操作Redis中list数据类型

  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);

PHP操作Redis中Set数据类型

  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);

PHP操作Redis中Zset数据类型

  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);

PHP操作Redis中Hash数据类型

  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);

PHP操作Redis数据的通用方法

时间: 2024-08-26 13:57:29

Redis学习笔记(二) ---- PHP操作Redis各数据类型的相关文章

Redis学习笔记(11)——Redis缓存集群方案

由于单台Redis服务器的内存管理能力有限,使用过大内存的Redis又会使得服务器的性能急剧下降,一旦服务器发生故障将会影响更大范围业务,而Redis 3.0 beta1支持的集群功能还不适合生产环境的使用.于是为了获取更好的Redis缓存性能及可用性,很多公司都研发了Redis缓存集群方案.现对NetFlix.Twitter.国内的豌豆荚在缓存集群方面的解决方案进行一个汇总,以供读者参考,具体内容如下: 1.NetFlix对Dynamo的开源通用实现Dynomite Dynomite是NetF

Redis学习笔记二

一.事务 Redis中的事务是一组命令的集合.一个事务中的命令要么都执行,要么都不执行. 1.事务简介 事务的原理是先将一个事务的命令发送给Redis,然后再让Redis依次执行这些命令.下面看一个示例: 首先,使用multi命令告诉Redis:下面我给你的命令属于同一个事务,你先不要执行,而是暂时存起来. 然后,我们发送两个set命令来实现赋值,可以看到redis没有执行这些命令,而是返回queued表示这两条命令已经进入等待执行的事务队列中. 当所有要在同一事务中执行的命令都发给Redis后

redis 学习笔记二 (简单动态字符串)

redis的基本数据结构是动态数组 一.c语言动态数组 先看下一般的动态数组结构 struct MyData { int nLen; char data[0]; }; 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势: 1.不需要初始化,数组名直接就是所在的偏移   2.不占任何空间,指针需要占用int长度空间,空数组不占任何空间.  这个数组不占用任何内存,意味着这样的结构节省空间: 该数组的内存地址就和他后面的元素的地址相同,意味着无需初始化,数组名就是后面元素的地

Redis的具体使用-Redis学习笔记二

1. key的操作 在redis里边,除了"\n"和空格 不能作为名字的组成内容外,其他内容都可以作为key的名字部分.名字长度不做要求. 不同redis数据库切换: 用select  ,默认是操作数据库0,默认共有16个数据库,所以数据库Index是从0到15 操作例子 [[email protected] ~]# cd /usr/local/ [[email protected] local]# cd redis/ [[email protected] redis]# l -bas

redis 学习笔记(二)

安装 1. 在centos下安装g++,如果输入 yum install g++,那么将会提示找不到g++.因为在centos下g++安装包名字叫做:gcc-c++ 所以应该输入 yum install gcc-c++,即可. 2. You need tcl 8.5 or newer in order to run the Redis test make: *** [test] Error 1 wget http://downloads.sourceforge.net/tcl/tcl8.6.1-

Redis学习笔记(1)Redis安装和启动

前言 作为一个开发者,一直想跟进一下大数据和云计算的步伐. 因此打算开始学习云计算和分布式数据的各种内容,先从Redis开始. Redis是Remote Dictionary Server的缩写,最初是开发用来作为数据库使用的工具. 在Linux下安装Redis非常简单 在终端运行以下命令 wget http://download.redis.io/redis-stable.tar.gz tar zxf redis-stable.tar.gz cd redis-stable.tar.gz mak

Redis 学习笔记四 Mysql 与Redis的同步实践

一.测试环境在Ubuntu kylin 14.04 64bit 已经安装Mysql.Redis.php.lib_mysqludf_json.so.Gearman. 点击这里查看测试数据库及表参考 本文也有些基本操作,在之前文章里有介绍. 1.安装 安装gearman-mysql-udf apt-get install libgearman-dev wget https://launchpad.net/gearman-mysql-udf/trunk/0.6/+download/gearman-my

Redis学习笔记~目录

redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hashs(哈希类型).这些数据类型都 支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排 序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更

Redis学习(二)、JAVA操作Redis

Redis学习(二).JAVA操作Redis 一.测试连接Redis是否连通 1.导包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 2.写一个RedisJava类测试 package cn.qiuuuu.redis; impo