参考网址:http://doc.redisfans.com/           

redis 在操作的时候,不区分大小写(包括php)

Key(键)

DEL key [key ...]

删除给定的一个或多个 key 。

不存在的 key 会被忽略。

http://doc.redisfans.com/key/del.html

EXISTS key

检查给定 key 是否存在。

http://doc.redisfans.com/key/exists.html

String(字符串)

GET key

返回 key 所关联的字符串值。

如果 key 不存在那么返回特殊值 nil 。

假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。

http://doc.redisfans.com/string/get.html

SET key value [EX seconds] [PX milliseconds] [NX|XX]

将字符串值 value 关联到 key 。

如果 key 已经持有其他值, SET 就覆写旧值,无视类型。

对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。

http://doc.redisfans.com/string/set.html

Hash(哈希表)

HSET key field value    设置值          hset

将哈希表 key 中的域 field 的值设为 value 。

如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。

如果域 field 已经存在于哈希表中,旧值将被覆盖。

http://doc.redisfans.com/hash/hset.html

HGET key field        获取值         hget

返回哈希表 key 中给定域 field 的值。

http://doc.redisfans.com/hash/hget.html

HGETALL key                       获取所有key        hgetall

返回哈希表 key 中,所有的域和值。

在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

http://doc.redisfans.com/hash/hgetall.html

HDEL key field                   删除key下的域                               

删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。

http://doc.redisfans.com/hash/hdel.html

HINCRBY key field increment   递增(整数) hincrby

为哈希表 key 中的域 field 的值加上增量 increment 。

增量也可以为负数,相当于对给定域进行减法操作。

如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。

如果域 field 不存在,那么在执行命令前,域的值被初始化为 0

http://doc.redisfans.com/hash/hincrby.html

HINCRBYFLOAT key field increment   递增(浮点) hincrbyfloat

为哈希表 key 中的域 field 加上浮点数增量 increment 。

如果哈希表中没有域 field ,那么 HINCRBYFLOAT 会先将域 field 的值设为 0 ,然后再执行加法操作。

如果键 key 不存在,那么 HINCRBYFLOAT 会先创建一个哈希表,再创建域 field ,最后再执行加法操作

http://doc.redisfans.com/hash/hincrbyfloat.html

hash的不能马上设置时间,只能用expire来设置key的时间,所以自己写个redis类来实现比较好。

expire 设置失效时间(单位/秒)
persist 取消失效时间
ttl/pttl(单位为 秒/毫秒) 查看键的剩余时间

有偿阅读项目用到:

hash
$redis = model('Redis');
$redis::hSet('yhytest','yhy','3332',20);//非原生reids(reids模块)
$redis::hSet('yhytest','yhy2','454',20);//非原生reids(reids模块)
echo $redis::hGet('yhytest','yhy');//非原生reids(reids模块)
var_dump($redis::$redis->hgetall('pd_yhytest')); //用原生的redis
 $bool5 = $redis::hIncrBy('user:jifen:day:('.$date.')',$uid,$jifen,3*24*3600); //用户当天金币//非原生reids(reids模块)
 

List(列表)

LPUSH key value [value ...]       从左边插入(相当于php的array_unshift)   # 列表允许重复元素

将一个或多个值 value 插入到列表 key 的表头

如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。

如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。

当 key 存在但不是列表类型时,返回一个错误。

http://doc.redisfans.com/list/lpush.html

LPOP key     从左边移除(php的array_shift) 

移除并返回列表 key 的头元素。

http://doc.redisfans.com/list/lpop.html

RPUSH key value [value ...]     从右边插入(相当于php的array_push)  

将一个或多个值 value 插入到列表 key 的表尾(最右边)。

如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。

如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。

当 key 存在但不是列表类型时,返回一个错误。

http://doc.redisfans.com/list/rpush.html

RPOP key   从右边移除(php的array_pop) 

移除并返回列表 key 的尾元素。

http://doc.redisfans.com/list/rpop.html

LLEN key   查询长度(就是list里有几个)

返回列表 key 的长度。

如果 key 不存在,则 key 被解释为一个空列表,返回 0 .

如果 key 不是列表类型,返回一个错误。

http://doc.redisfans.com/list/llen.html

LINDEX key index      查询(用下标)

返回列表 key 中,下标为 index 的元素。

下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。

你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

如果 key 不是列表类型,返回一个错误。

http://doc.redisfans.com/list/lindex.html

LRANGE key start stop     区间查询    例如:lrange key 0 -1   查询全部

返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。

下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。

你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

注意LRANGE命令和编程语言区间函数的区别

假如你有一个包含一百个元素的列表,对该列表执行 LRANGE list 0 10 ,结果是一个包含11个元素的列表,这表明 stop 下标也在LRANGE 命令的取值范围之内(闭区间),这和某些语言的区间函数可能不一致,比如Ruby的 Range.new 、 Array#slice 和Python的range() 函数。

超出范围的下标

超出范围的下标值不会引起错误。

如果 start 下标比列表的最大下标 end ( LLEN list 减去 1 )还要大,那么 LRANGE 返回一个空列表。

如果 stop 下标比 end 下标还要大,Redis将 stop 的值设置为 end 。

http://doc.redisfans.com/list/lrange.html

有偿阅读项目用到:

list
$lastRead = $redis::$redis->lindex(config('redis_prefix').'user:jifen:log:('.$this->uid.')',0);
$bool4 = $redis::$redis->lpush(config('redis_prefix').'user:jifen:log:('.$uid.')',$record); //金币记录(保留100条)
$num = $redis::$redis->llen (config('redis_prefix').'user:jifen:log:('.$uid.')');
$redis::$redis->rpop(config('redis_prefix').'user:jifen:log:('.$uid.')');
 

Set(集合)

SADD key member [member ...]      集合里不可添加一样的值(值唯一) sadd

将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。

假如 key 不存在,则创建一个只包含 member 元素作成员的集合。

当 key 不是集合类型时,返回一个错误。

http://doc.redisfans.com/set/sadd.html

SREM key member [member ...]     移除某个值  srem

移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。

当 key 不是集合类型,返回一个错误。

http://doc.redisfans.com/set/srem.html

SMEMBERS key    查询所有成员,返回是数组(array)形式【php】

返回集合 key 中的所有成员。

不存在的 key 被视为空集合。

http://doc.redisfans.com/set/smembers.html

 
有偿阅读项目用到:
set
$redis::sadd('blacklist:ip',$ip);
$ips = $redis::smembers('blacklist:ip');
$aNum = Redis::sRem('article:favor:('.$articleId.')',$uid);
 

SortedSet(有序集合)

ZADD key score member [[score member] [score member] ...]    有序集合添加,添加键值存在并且值一样的添加不进去,除此之外都行(已存在的键值,值会被覆盖)

                                            【添加已存在元素,且 score 值不变】  【添加已存在元素,但是改变 score 值】

将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。

score 值可以是整数值或双精度浮点数。

如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。

当 key 存在但不是有序集类型时,返回一个错误。

对有序集的更多介绍请参见 sorted set 。

http://doc.redisfans.com/sorted_set/zadd.html

ZRANGE key start stop [WITHSCORES]          按区间(根据下标)获取成员,按 score 值递增(从小到大)来排序(默认)

可以只取值不取键:ZRANGE salary 0 -1           # 显示整个有序集成员

返回有序集 key 中,指定区间内的成员。

其中成员的位置按 score 值递增(从小到大)来排序。

具有相同 score 值的成员按字典序(lexicographical order )来排列。

如果你需要成员按 score 值递减(从大到小)来排列,请使用 ZREVRANGE 命令。

下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
超出范围的下标并不会引起错误。
比如说,当 start 的值比有序集的最大下标还要大,或是 start > stop 时, ZRANGE 命令只是简单地返回一个空列表。
另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。
可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。
客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]   按区间(根据下标,可判断大小的)获取成员,按 score 值递增(从小到大)来排序(默认)

可以只取值不取键:  ZRANGEBYSCORE salary -inf +inf # 显示整个有序集

返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

具有相同 score 值的成员按字典序(lexicographical order)来排列(该属性是有序集提供的,不需要额外的计算)。

http://doc.redisfans.com/sorted_set/zrangebyscore.html

ZREM key member [member ...]     移除某个成员

移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。

当 key 存在但不是有序集类型时,返回一个错误。

有偿阅读项目用到:

zadd
$uNum = $redis::$redis->zAdd(config('redis_prefix').'user:article:favor:('.$uid.')_zadd',$now,$articleId);//原生
$category = Redis::zRangeByScore('user:mycategory:('.$this->uid.')','-inf','+inf');
$uNum = Redis::zRem('user:article:favor:('.$uid.')',$articleId);
Redis::zdel('user:mycategory:('.$this->uid.')');//删除用户频道缓存 //用的是reids模块里的,原生没有,是直接删除key的

Pub/Sub(发布/订阅)

Transaction(事务)

Redis 基本操作的更多相关文章

  1. 三、Redis基本操作——List

    小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...

  2. 二、Redis基本操作——String(实战篇)

    小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...

  3. 一、Redis基本操作——String(原理篇)

    小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...

  4. Redis基本操作-20150608

    Redis基本操作-20150608 [http://my.oschina.net/u/241255/blog/206991]   Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存 ...

  5. 【原】Redis基本操作

    Redis基本操作 遍历操作 Pub-Sub server Lua脚本 Redis中的这些操作都是不分大小写的. 除了针对于具体类型的具体操作.还有一些其他操作. 遍历操作 SCAN cursor [ ...

  6. Redis基本操作——List

    Redis基本操作——List(原理篇) 学习过数据结构的同学,一定对链表(Linked List)十分的熟悉.相信我们自己也曾经使用过这种数据结构. 链表分为很多种:单向链表,双向链表,循环链表,块 ...

  7. Redis基本操作-list

    Redis的5种数据结构:string.list.hash.set和zset; Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数 ...

  8. Redis基本操作-string

    Redis的5种数据结构:string.list.hash.set和zset; Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数 ...

  9. jedis使用线程池封装redis基本操作

    redisclient jedis 经常使用的 操作 key value hash list set zset 的基本操作 package cn.zto.util; import java.util. ...

  10. Redis 基本操作(一)

    redis和普通的Key-Value结构不同,Redis的Key支持灵活的数据结构,除了strings,还有hashes.lists. sets 和sorted sets等结构.正是这些灵活的数据结构 ...

随机推荐

  1. Dom4j把xml转换成Map(非固定格式)

    将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...

  2. Linux下长时间ping网络加时间戳并记录到文本

    Linux下长时间ping网络加时间戳并记录到文本   由于一些原因,比如需要检查网络之间是否存在掉包等问题,会长时间去ping一个地址,由于会输出大量的信息而且最好要有时间戳,因此我们可以使用简单的 ...

  3. 1 web.xml配置详解

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  4. Holt-Winters原理和初始值的确定

      关于模型 (来自以下PPT,从第4页开始)   关于初始值: 以下文档给出了三个模型的初始值计算的思路. 大致思路如下,建立一个p阶移动平均模型,估计出参数即为初始值,具体的根据三种不同的模型,有 ...

  5. 超酷jQuery进度条加载动画集合

    在丰富多彩的网页世界中,进度条加载动画的形式非常多样,有利用gif图片实现的loading动画,也有利用jQuery和CSS3实现的进度加载动画,本文主要向大家介绍很多jQuery和CSS3实现的进度 ...

  6. shell--4.echo和printf

    1. echo (1) echo ,显示普通字符串 echo "HelloWorld" 打印:HelloWorld (2) \ ,显示转义字符串 echo "\" ...

  7. Site Not Found

    http://moofx.it/ Site Not Found http://www. suchso.com /code/ace/gallery.html http://demo.rocketthem ...

  8. TCP/IP四层模型

    转自:http://www.cnblogs.com/BlueTzar/articles/811160.html ISO制定的OSI参考模型的过于庞大.复杂招致了许多批评.与此对照,由技术人员自己开发的 ...

  9. 解析XML文档

    <html> <body><h1>W3School.com.cn Internal Note</h1><p><b>To:< ...

  10. nodejs开发指南demo

    由于手上拿的教程是2012年出版的,到如今已历经N个版本,所以在写代码时报过一堆错.这是解决错误后的版本. 源码下载