<h2 id="articleHeader0">String 类型操作
string是redis最基本的类型,而且string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象
PHP">setex(
PHP">psetex(
setnx(
PHP">delete(删除键值 可以传入数组 删除多个键
PHP">getSet(
PHP">multi() set(get(setnx(get(exec();
watch(修改
如果KEY在调用watch()和修改,
PHP">订阅
<span class="hljs-keyword"><span class="hljs-keyword">case <span class="hljs-string"><span class="hljs-string">'chan-2':
<span class="hljs-keyword"><span class="hljs-keyword">echo <span class="hljs-variable">$msg;
<span class="hljs-keyword"><span class="hljs-keyword">break;
<span class="hljs-keyword"><span class="hljs-keyword">case <span class="hljs-string"><span class="hljs-string">'chan-2':
<span class="hljs-keyword"><span class="hljs-keyword">echo <span class="hljs-variable">$msg;
<span class="hljs-keyword"><span class="hljs-keyword">break;
}
}
<span class="hljs-variable">$redis->subscribe(<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-string"><span class="hljs-string">'chan-1',<span class="hljs-string"><span class="hljs-string">'chan-2',<span class="hljs-string"><span class="hljs-string">'chan-3'),<span class="hljs-string"><span class="hljs-string">'f'); <span class="hljs-comment"><span class="hljs-comment">// subscribe to 3 chans
<span class="hljs-variable">$redis->publish(<span class="hljs-string"><span class="hljs-string">'chan-1',<span class="hljs-string"><span class="hljs-string">'hello,world!'); <span class="hljs-comment"><span class="hljs-comment">// send message.
<pre class="hljs ruby"><code class="hljs"><span class="hljs-variable">$redis->exists(<span class="hljs-string"><span class="hljs-string">'key'); <span class="hljs-regexp"><span class="hljs-regexp">//验证键是否存在,存在返回<span class="hljs-keyword"><span class="hljs-literal">true
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->incr(<span class="hljs-string"><span class="hljs-string">'number'); <span class="hljs-comment"><span class="hljs-comment">//键值加1
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->incrby(<span class="hljs-string"><span class="hljs-string">'number',<span class="hljs-number">-<span class="hljs-number"><span class="hljs-number">10); <span class="hljs-comment"><span class="hljs-comment">//键值加减10
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->incrByFloat(<span class="hljs-string"><span class="hljs-string">'number',+/- <span class="hljs-number"><span class="hljs-number">1.5); <span class="hljs-comment"><span class="hljs-comment">//键值加减小数
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->decr(<span class="hljs-string"><span class="hljs-string">'number'); <span class="hljs-comment"><span class="hljs-comment">// 键值减1
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->decrBy(<span class="hljs-string"><span class="hljs-string">'number',<span class="hljs-number"><span class="hljs-number">10); <span class="hljs-comment"><span class="hljs-comment">// 键值减10
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$mget = <span class="hljs-variable">$redis->mget(<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-string"><span class="hljs-string">'number',<span class="hljs-string"><span class="hljs-string">'key')); <span class="hljs-comment"><span class="hljs-comment">// 批量获取键值,返回一个数组
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->mset(<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-string"><span class="hljs-string">'key0' => <span class="hljs-string"><span class="hljs-string">'value0',<span class="hljs-string"><span class="hljs-string">'key1' => <span class="hljs-string"><span class="hljs-string">'value1')); <span class="hljs-comment"><span class="hljs-comment">// 批量设置键值
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->msetnx(<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-string"><span class="hljs-string">'key0' => <span class="hljs-string"><span class="hljs-string">'value0',<span class="hljs-string"><span class="hljs-string">'key1' => <span class="hljs-string"><span class="hljs-string">'value1'));
<span class="hljs-comment"><span class="hljs-comment">// 批量设置键值,类似将setnx()方法批量操作
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->append(<span class="hljs-string"><span class="hljs-string">'key',<span class="hljs-string"><span class="hljs-string">'-Smudge'); <span class="hljs-comment"><span class="hljs-comment">//原键值TK,将值追加到键值后面,键值为TK-Smudge
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->getRange(<span class="hljs-string"><span class="hljs-string">'key',<span class="hljs-number"><span class="hljs-number">0,<span class="hljs-number"><span class="hljs-number">5); <span class="hljs-comment"><span class="hljs-comment">// 键值截取从0位置开始到5位置结束
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->getRange(<span class="hljs-string"><span class="hljs-string">'key',<span class="hljs-number">-<span class="hljs-number"><span class="hljs-number">6,<span class="hljs-number">-<span class="hljs-number"><span class="hljs-number">1); <span class="hljs-comment"><span class="hljs-comment">// 字符串截取从-6(倒数第6位置)开始到-1(倒数第1位置)结束
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->setRange(<span class="hljs-string"><span class="hljs-string">'key',<span class="hljs-string"><span class="hljs-string">'Smudge');
<span class="hljs-comment"><span class="hljs-comment">// 键值中替换字符串,0表示从0位置开始
有多少个字符替换多少位置,其中汉字占<span class="hljs-number"><span class="hljs-number">2个位置
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->strlen(<span class="hljs-string"><span class="hljs-string">'key'); <span class="hljs-comment"><span class="hljs-comment">//键值长度
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->getBit(<span class="hljs-string"><span class="hljs-string">'key');
<pre class="hljs bash"><code class="hljs"><span class="hljs-variable"><span class="hljs-variable">$redis-><span class="hljs-built_in">setBit(<span class="hljs-string"><span class="hljs-string">'key');
PHP">delete(删除链表
PHP">lPush(
PHP">rPush(
PHP">lPushx(
PHP">rPushx(
PHP">lPop(
PHP">rPop(
PHP">blPop();
PHP">brPop();
PHP">lSize(
PHP">lGet(获取链表元素 0获取左侧一个 -1获取最后一个
PHP">lSet(
PHP">lRange(截取 从0开始 3位置结束 ,结束位置为-1 获取开始位置之后的全部
PHP">lTrim(截取链表(不可逆) 从0索引开始 1索引结束
PHP">lRem(删除元素2个C
PHP">lInsert(
PHP">rpoplpush(
PHP">brpoplpush();
PHP">sMembers(获取容器key中所有元素
sAdd(添加成功 返回
PHP">sRem(
PHP">sMove(
PHP">sIsMember(
PHP">sCard(
PHP">sPop(随机返回容器中一个元素,并移除该元素
PHP">sRandMember(随机返回容器中一个元素,不移除该元素
PHP">sInter(
PHP">sInterStore(
PHP">sUnion(<span class="hljs-variable">$redis->sUnionStore(<span class="hljs-string"><span class="hljs-string">'store',<span class="hljs-string"><span class="hljs-string">'key1');
<span class="hljs-comment"><span class="hljs-comment">//集合key和集合key1的并集保存在集合store中,注意即使多个集合有相同元素 只保留一个
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->sDiff(<span class="hljs-string"><span class="hljs-string">'key',<span class="hljs-string"><span class="hljs-string">'key2'); <span class="hljs-comment"><span class="hljs-comment">//返回数组,该数组元素是存在于key集合而不存在于集合key1 key2
delete(删除链表
lPush(
rPush(
lPushx(
rPushx(
lPop(
rPop(
blPop();
brPop();
lSize(
lGet(获取链表元素 0获取左侧一个 -1获取最后一个
lSet(
lRange(截取 从0开始 3位置结束 ,结束位置为-1 获取开始位置之后的全部
lTrim(截取链表(不可逆) 从0索引开始 1索引结束
lRem(删除元素2个C
lInsert(
rpoplpush(
brpoplpush();
PHP">sMembers(获取容器key中所有元素
sAdd(添加成功 返回
PHP">sRem(
PHP">sMove(
PHP">sIsMember(
PHP">sCard(
PHP">sPop(随机返回容器中一个元素,并移除该元素
PHP">sRandMember(随机返回容器中一个元素,不移除该元素
PHP">sInter(
PHP">sInterStore(
PHP">sUnion(<span class="hljs-variable">$redis->sUnionStore(<span class="hljs-string"><span class="hljs-string">'store',<span class="hljs-string"><span class="hljs-string">'key1');
<span class="hljs-comment"><span class="hljs-comment">//集合key和集合key1的并集保存在集合store中,注意即使多个集合有相同元素 只保留一个
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->sDiff(<span class="hljs-string"><span class="hljs-string">'key',<span class="hljs-string"><span class="hljs-string">'key2'); <span class="hljs-comment"><span class="hljs-comment">//返回数组,该数组元素是存在于key集合而不存在于集合key1 key2
**(stored set) 和 set 一样是字符串的集合,不同的是每个元素都会关联一个 double 类型的 scoreredis的list类型其实就是一个每个子元素都是string类型的双向链表。**
PHP">zAdd(
PHP">zRange(获取集合元素,从0位置 到 -1 位置
PHP">zRange(获取集合元素,从0位置 到 -1 位置,返回一个关联数组 带分数
方法第二个参数
PHP">zDelete(
PHP">zRevRange(获取集合元素,从0位置 到 -1 位置,数组按照score降序处理
<span class="hljs-variable">$redis->zRevRange(<span class="hljs-string"><span class="hljs-string">'tkey',<span class="hljs-keyword"><span class="hljs-keyword">true);
<span class="hljs-comment"><span class="hljs-comment">// 获取集合元素,从0位置 到 -1 位置,数组按照score降序处理 返回score关联数组
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zRangeByscore(<span class="hljs-string"><span class="hljs-string">'tkey',<span class="hljs-number"><span class="hljs-number">0.2,<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-string"><span class="hljs-string">'withscores' => <span class="hljs-keyword"><span class="hljs-keyword">true));
<span class="hljs-comment"><span class="hljs-comment">//获取几个tkey中score在区间[0,0.2]元素,score由低到高排序,元素具有相同的score,那么会按照字典顺序排列,withscores 控制返回关联数组
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zRangeByscore(<span class="hljs-string"><span class="hljs-string">'tkey',<span class="hljs-number"><span class="hljs-number">0.1,<span class="hljs-number"><span class="hljs-number">0.36,<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-string"><span class="hljs-string">'withscores' => <span class="hljs-keyword"><span class="hljs-keyword">TRUE,<span class="hljs-string"><span class="hljs-string">'limit' => <span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-number"><span class="hljs-number">0,<span class="hljs-number"><span class="hljs-number">1)));
<span class="hljs-comment"><span class="hljs-comment">//其中limit中 0和1 表示取符合条件集合中 从0位置开始,向后扫描1个 返回关联数组
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zCount(<span class="hljs-string"><span class="hljs-string">'tkey',<span class="hljs-number"><span class="hljs-number">2,<span class="hljs-number"><span class="hljs-number">10); <span class="hljs-comment"><span class="hljs-comment">// 获取tkey中score在区间[2,10]元素的个数
<pre class="hljs markdown"><code class="hljs">$redis->zRemRangeByscore('tkey',1,3); // 移除tkey中score在区间[<span class="hljs-link_label"><span class="hljs-string">1,3](<span class="hljs-link_url"><span class="hljs-link">含边界)的元素
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zRemRangeByRank(<span class="hljs-string"><span class="hljs-string">'tkey',<span class="hljs-number"><span class="hljs-number">1);
<span class="hljs-comment"><span class="hljs-comment">//默认元素score是递增的,移除tkey中元素 从0开始到-1位置结束
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zSize(<span class="hljs-string"><span class="hljs-string">'tkey'); <span class="hljs-comment"><span class="hljs-comment">//返回存储在key对应的有序集合中的元素的个数
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zscore(<span class="hljs-string"><span class="hljs-string">'tkey',<span class="hljs-string"><span class="hljs-string">'A'); <span class="hljs-comment"><span class="hljs-comment">// 返回集合tkey中元素A的score值
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zRank(<span class="hljs-string"><span class="hljs-string">'tkey',<span class="hljs-string"><span class="hljs-string">'A');
<span class="hljs-comment"><span class="hljs-comment">// 返回集合tkey中元素A的索引值
z集合中元素按照score从低到高进行排列 ,即最低的score index索引为<span class="hljs-number"><span class="hljs-number">0
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zIncrBy(<span class="hljs-string"><span class="hljs-string">'tkey',<span class="hljs-number"><span class="hljs-number">2.5,<span class="hljs-string"><span class="hljs-string">'A'); <span class="hljs-comment"><span class="hljs-comment">// 将集合tkey中元素A的score值 加 2.5
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zUnion(<span class="hljs-string"><span class="hljs-string">'union',<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-string"><span class="hljs-string">'tkey',<span class="hljs-string"><span class="hljs-string">'tkey1'));
<span class="hljs-comment"><span class="hljs-comment">// 将集合tkey和集合tkey1元素合并于集合union,并且新集合中元素不能重复
返回新集合的元素个数, 如果元素A在tkey和tkey1都存在,则合并后的元素A的score相加
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zUnion(<span class="hljs-string"><span class="hljs-string">'ko2',<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-string"><span class="hljs-string">'k1',<span class="hljs-string"><span class="hljs-string">'k2'),<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-number"><span class="hljs-number">5,<span class="hljs-number"><span class="hljs-number">2));
<span class="hljs-comment"><span class="hljs-comment">// 集合k1和集合k2并集于k02 ,array(5,1)中元素的个数与子集合对应,然后 5 对应k1
k1每个元素score都要乘以<span class="hljs-number"><span class="hljs-number">5 ,同理<span class="hljs-number"><span class="hljs-number">1对应k2,k2每个元素score乘以<span class="hljs-number"><span class="hljs-number">1
然后元素按照递增排序,默认相同的元素score(SUM)相加
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zUnion(<span class="hljs-string"><span class="hljs-string">'ko2',<span class="hljs-keyword"><span class="hljs-keyword">array(<span class="hljs-number"><span class="hljs-number">10,<span class="hljs-number"><span class="hljs-number">2),<span class="hljs-string"><span class="hljs-string">'MAX');
<span class="hljs-comment"><span class="hljs-comment">// 各个子集乘以因子之后,元素按照递增排序,相同的元素的score取最大值(MAX)
也可以设置MIN 取最小值
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zInter(<span class="hljs-string"><span class="hljs-string">'ko1',<span class="hljs-string"><span class="hljs-string">'k2'));
<span class="hljs-comment"><span class="hljs-comment">// 集合k1和集合k2取交集于k01 ,且按照score值递增排序
如果集合元素相同,则新集合中的元素的score值相加
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zInter(<span class="hljs-string"><span class="hljs-string">'ko1',<span class="hljs-number"><span class="hljs-number">1));
<span class="hljs-comment"><span class="hljs-comment">//集合k1和集合k2取交集于k01 ,array(5,1)中元素的个数与子集合对应,然后 5 对应k1
k1每个元素score都要乘以<span class="hljs-number"><span class="hljs-number">5 ,同理<span class="hljs-number"><span class="hljs-number">1对应k2,k2每个元素score乘以<span class="hljs-number"><span class="hljs-number">1
,然后元素score按照递增排序,默认相同的元素score(SUM)相加
<pre class="hljs PHP"><code class="hljs"><span class="hljs-variable">$redis->zInter(<span class="hljs-string"><span class="hljs-string">'ko1',<span class="hljs-number"><span class="hljs-number">1),<span class="hljs-string"><span class="hljs-string">'MAX');
<span class="hljs-comment"><span class="hljs-comment">// 各个子集乘以因子之后,元素score按照递增排序,相同的元素score取最大值(MAX)
也可以设置MIN 取最小值
redis hash是一个string类型的field和value的映射表.它的添加,删除操作都是O(1)(平均).hash特别适合用于存储对象。
PHP">hSet(添加name字段 value为TK
hSetNx(添加name字段 value为
PHP">hGet(获取h表中name字段value
PHP">hLen(获取h表长度即字段的个数
PHP">hDel(删除h表中email 字段
PHP">hKeys(获取h表中所有字段
PHP">hVals(获取h表中所有字段value
PHP">hGetAll(获取h表中所有字段和value 返回一个关联数组(字段为键值)
hExists(
PHP">hSet(
hIncrBy(
hIncrByFloat(
PHP">hMset(