redis常用命令手册大全

一、五种数据类型
1.Redis字符串String
String 是最简单的类型,你可以理解成与 Memcached 是一模一样的类型,一个 key 对应一个value,其上支持的操作与 Memcached 的操作类似。但它的功能更丰富。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据.
①.set设置指定的key的值

127.0.0.1:6379> set name mzOK127.0.0.1:6379> 

②.get获取指定的key的值

127.0.0.1:6379> get name"mz"127.0.0.1:6379> 

如果key不存在,返回nil

127.0.0.1:6379> get col(nil)127.0.0.1:6379> 

③.incr给指定的key值加一,返回一个加一之后的结果。

127.0.0.1:6379> set num 10OK127.0.0.1:6379> incr num(integer) 11127.0.0.1:6379> 

④.incrby将 key 所储存的值加上给定的增量值

127.0.0.1:6379> incrby num 10(integer) 21127.0.0.1:6379> 

⑤.decr将key 中储存的数字值减一。

127.0.0.1:6379> decr num(integer) 20127.0.0.1:6379> 

⑥.decrby将 key 所储存的值减去给定的增量值

127.0.0.1:6379> decrby num 5(integer) 1527.0.0.1:6379> 

⑦.SETBIT key offset value

127.0.0.1:6379> setbit tom 100 1(integer) 0127.0.0.1:6379> 

⑧.getset key value
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

127.0.0.1:6379> getset num 0"15"127.0.0.1:6379> get num"0"127.0.0.1:6379> 

思考:getset和incr结合有什么作用呢?
如果要设计一个复位的计数器,该如何使用呢?
如果某一个进程发生时,就会调用incr,当该进程结束时,完成get myCount 和set myCount 0.

127.0.0.1:6379> incr myCount (integer) 1127.0.0.1:6379> incr myCount(integer) 2127.0.0.1:6379> getset myCount 0"2"127.0.0.1:6379> get myCount"0"127.0.0.1:6379> 

应用:计数器

计数器是 Redis 的原子性自增操作可实现的最直观的模式了,它的想法相当简单:每当某个操作发生时,向Redis 发送一个INCR 命令。
比如在一个 web 应用程序中,如果想知道用户在一年中每天的点击量,那么只要将用户 ID 以及相关的日期信息作为键,并在每次用户点击页面时,执行一次自增操作即可。
比如用户名是 peter ,点击时间是 2012 年 3 月 22 日,那么执行命令 INCR peter::2012.3.22 。
可以用以下几种方式扩展这个简单的模式:
• 可以通过组合使用INCR 和EXPIRE ,来达到只在规定的生存时间内进行计数 (counting) 的目的。
• 客户端可以通过使用GETSET 命令原子性地获取计数器的当前值并将计数器清零
• 使用其他自增/自减操作,比如DECR 和INCRBY ,用户可以通过执行不同的操作增加或减少计数器的值,比如在游戏中的记分器就可能用到这些命令。

2.redis哈希(hash)

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
①.hset key fields
设置哈希表中的key对应的 filed和value

127.0.0.1:6379> hmset cat name "tom" color "red" age "12"OK127.0.0.1:6379>

②.hget key field
获取哈希表中key的字段值

  127.0.0.1:6379> hget cat name  "tom"  127.0.0.1:6379> 

③.hlen key
获取哈希表中字段的数量
127.0.0.1:6379> hlen cat
(integer) 3
127.0.0.1:6379>

④.hkeys key
获取该哈希表中所有的filed

127.0.0.1:6379> hkeys cat1) "name"2) "color"3) "age"127.0.0.1:6379> 

⑤.hvals key 获取哈希表中所有值

127.0.0.1:6379> hvals cat1) "tom"2) "red"3) "12"127.0.0.1:6379> 

3.redis列表(list)
①.lpush key value
将一个或多个值插入到列表头部
key后面的value可以是多个

127.0.0.1:6379> lpush username xm(integer) 1127.0.0.1:6379> lpush username xg(integer) 2127.0.0.1:6379> lpush username zg(integer) 3127.0.0.1:6379> lpush username we we(integer) 5127.0.0.1:6379> 

②.lrange key start end
取出给定索引范围的列表值

127.0.0.1:6379> lrange username 0 71) "we"2) "we"3) "zg"4) "xg"5) "xm"

注:后面那个索引超出也没有关系,redis会自动处理,会取出在哪个范围内的所有值
看完有什么发现呢?是不是觉得跟栈的特点很相似,先进后出。
③.lpop key
移除并获取列表中的第一个元素

127.0.0.1:6379> lpop username"we"127.0.0.1:6379> lrange username 0 101) "we"2) "zg"3) "xg"4) "xm"127.0.0.1:6379> 

④.通过索引获取
获取指定索引处的值,如果该索引处没有值,则返回nil

127.0.0.1:6379> lindex username 5(nil)127.0.0.1:6379> lindex username 4"xm"127.0.0.1:6379> 

⑤.rpop key
移除列表的最后一个元素,返回值为移除的元素。

127.0.0.1:6379> rpop username"xm"127.0.0.1:6379> lrange username 0 101) "we"2) "zg"3) "xg"127.0.0.1:6379> 

应用:

双十一秒杀
最新消息的排行

4.redis集合set

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

①.lpush key value

127.0.0.1:6379> lpush username weh(integer) 5127.0.0.1:6379> sadd animal dog(integer) 1127.0.0.1:6379> sadd animal pig(integer) 1127.0.0.1:6379> sadd animal cat(integer) 1 127.0.0.1:6379> sadd animal cat(integer) 0127.0.0.1:6379> smembers animal1) "pig"2) "dog"3) "cat"127.0.0.1:6379> 

发现什么了吗?和Java中的set类似,无序不能重复

②.scard key 获取集合的成员数

127.0.0.1:6379> scard animal(integer) 5127.0.0.1:6379> 

③.smembers key返回集合中的所有成员

127.0.0.1:6379> smembers animal1) "sheep"2) "pig"3) "dog"4) "cat"5) "tiger"

④.spop key
移除并返回集合中的一个随机元素

127.0.0.1:6379> spop animal"dog"127.0.0.1:6379> smembers animal 1) "cat" 2) "pig" 3) "sheep" 4) "tiger"127.0.0.1:6379> 

⑤.SISMEMBER key member
判断 member 元素是否是集合 key 的成员

 127.0.0.1:6379> sismember animal cat (integer) 1 127.0.0.1:6379> sismember animal jj (integer) 0 127.0.0.1:6379> 

是返回1,否则,返回0
⑥.sinter key1 key2
求集合中的交集

127.0.0.1:6379> sadd dog a b c d f g h(integer) 7127.0.0.1:6379> sadd pig a b c d m l o(integer) 7127.0.0.1:6379> sinter dog pig1) "d"2) "b"3) "a"4) "c"127.0.0.1:6379> 

⑦.sinterstore newkey key1 key2
返回集合中的交集,并存放到新的集合中

127.0.0.1:6379> sinterstore my dog pig(integer) 4127.0.0.1:6379> smembers my1) "a"2) "c"3) "b"4) "d"127.0.0.1:6379> 

应用:

每一个人的QQ好友都存放到一个集合中,这样求两个人共同好友的,只需求出交集即可。

5.redis有序集合sorted set
sorted set 是 set 的一个升级版本,它在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset 会自动重新按新的值调整顺序。可以理解为有两列的 mysql 表,一列存 value,一列存顺序。操作中 key 理解为 zset 的名字。和 set 一样 sorted set 也是 string 类型元素的集合,不同的是每个元素都会关联一个 double类型的 score。sorted set 的实现是 skip list 和 hash table 的混合体。
当元素被添加到集合中时,一个元素到 score 的映射被添加到 hash table 中,所以给定一个元素获取 score 的开销是 O(1),另一个 score 到元素的映射被添加到 skip list,并按照 score 排序,所以就可以有序的获取集合中的元素。添加,删除操作开销都是 O(log(N))和 skip list 的开销一致,redis 的 skip list 实现用的是双向链表,这样就可以逆序从尾部取元素。sorted set 最
经常的使用方式应该是作为索引来使用.我们可以把要排序的字段作为 score 存储,对象的 id当元素存储。

以某一个条件为权重,进行排序。

①.zadd key scores members
向名称为 key 的 zset 中添加元素 member,score 用于排序。如果该元素已经存在,则根据score 更新该元素的顺序

127.0.0.1:6379> zadd myaset 1 one(integer) 1127.0.0.1:6379> zadd myaset 2 two(integer) 1127.0.0.1:6379> zadd myaset 5 three(integer) 1127.0.0.1:6379> zadd myaset 6 three(integer) 0127.0.0.1:6379> zrange myaset 0 6 withscores1) "one"2) "1"3) "two"4) "2"5) "three"6) "6"127.0.0.1:6379> 

我们可以看到three被设置了两次,以最后一次为准

②.zrem
删除名称为 key 的 zset 中的元素 member

127.0.0.1:6379> zrange myaset 0 6 withscores1) "one"2) "1"3) "two"4) "2"5) "three"6) "6"127.0.0.1:6379> zrem myaset one(integer) 1127.0.0.1:6379> zrange myaset 0 6 withscores 1) "two" 2) "2" 3) "three" 4) "6"127.0.0.1:6379> 

two被删除

③. zincrby

如果在名称为 key 的 zset 中已经存在元素 member,则该元素的 score 增加 increment;否则向集合中添加该元素,其 score 的值为 increment

127.0.0.1:6379> zrange myaset 0 6 withscores1) "two"2) "2"3) "three"4) "6"127.0.0.1:6379> zincrby myaset 3 three"9"127.0.0.1:6379> 

three由3增加到了9
④.zrank
返回名称为 key 的 zset 中 member 元素的排名(按 score 从小到大排序)即下标

127.0.0.1:6379> zrank myaset two(integer) 0127.0.0.1:6379> zrank myaset three(integer) 1127.0.0.1:6379> 

注意:返回的是索引,不是score

⑤. zrevrank
返回名称为 key 的 zset 中 member 元素的排名(按 score 从大到小排序)即下标

127.0.0.1:6379> zrevrange myaset 0 10 withscores1) "three"2) "9"3) "two"4) "2"127.0.0.1:6379> 

⑥.zcount
返回集合中 score 在给定区间的数量

127.0.0.1:6379> zcount myaset 1 10(integer) 2127.0.0.1:6379> 

应用:

搜索商品时按照价格排序

二.键值命令

  1. keys *
    返回所有key

    127.0.0.1:6379> keys * 1) "color" 2) "a" 3) "mz" 4) "my" 5) "x" 6) "name" 7) "customer" 8) "dog" 9) "username"

    2.keys w*
    取出以w开头的key

     127.0.0.1:6379> keys w* 1) "wan" 2) "weh" 127.0.0.1:6379> 

    3.exists key
    是否存在该键
    4.del key
    删除指定的键

    127.0.0.1:6379> exists wan (integer) 1127.0.0.1:6379> del wan(integer) 1127.0.0.1:6379> exists wan(integer) 0127.0.0.1:6379> 

    5.expire
    设置过期时间(单位:秒)

    127.0.0.1:6379> expire debt 15(integer) 1127.0.0.1:6379> ttl debt(integer) 9127.0.0.1:6379> ttl debt(integer) 2127.0.0.1:6379> ttl debt(integer) -2127.0.0.1:6379> 

    设置debt这个key的过期时间是15秒,然后我们不断的用ttl 来获取这个
    key 的有效时长,直至为-2 说明此值已过期
    6.move
    将当前数据库中的 key 转移到其它数据库中

    127.0.0.1:6379> select 0OK127.0.0.1:6379> set bus 1OK127.0.0.1:6379> move bus 2(integer) 1127.0.0.1:6379> select 2OK127.0.0.1:6379[2]> get bus"1"127.0.0.1:6379[2]> 

    7.移除给定 key 的过期时间

    127.0.0.1:6379[2]> expire bus 100(integer) 1127.0.0.1:6379[2]> ttl bus (integer) 83127.0.0.1:6379[2]> persist bus(integer) 1127.0.0.1:6379[2]> ttl bus(integer) -1127.0.0.1:6379[2]> 

    8.randomkey
    随即返回一个key

    127.0.0.1:6379> randomkey"s"127.0.0.1:6379> randomkey"myCount"127.0.0.1:6379> randomkey"dog"127.0.0.1:6379> 

9.rename
重命名key

 127.0.0.1:6379> rename s dg OK 127.0.0.1:6379> 

三、服务相关
1.ping
测试连接是否成功

 127.0.0.1:6379> ping  PONG 127.0.0.1:6379> 

2.quit
退出

3.dbsize
返回数据库中的key的数目

 127.0.0.1:6379> dbsize integer) 26 127.0.0.1:6379> 

4.flushdb
删除当前库的所有key
5.flushall
删除所有数据库的key
6.select 库的索引
redis有16个数据库,默认都存在0号库

原文地址:https://www.cnblogs.com/wanerhu/p/11403381.html

时间: 2024-10-14 11:24:09

redis常用命令手册大全的相关文章

Redis常用命令手册:服务器相关命令

1.ping 测试连接是否存活: redis 127.0.0.1:6379> ping PONG //执行下面命令之前,我们停止redis服务器 redis 127.0.0.1:6379> ping Could not connect to Redis at 127.0.0.1:6379: Connection refused //执行下面命令之前,我们启动redis服务器 not connected> ping PONG redis 127.0.0.1:6379> 第一个ping

Redis常用命令手册:键值相关命令

Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如各类语言包,这些命令都有对应的方法.下面将Redis提供的命令做一总结. 键值相关命令 1.keys 返回满足给定pattern的所有key: redis 127.0.0.1:6379> keys * 1) "myzset2" 2) "myzset3" 3) "mylist" 4) "myset2&

Redis 常用命令 大全

Redis 常用命令 发现几个很好的 Redis 常用命令汇总大全网页,分享给小伙伴们~ 1.Redis 命令参考 http://redisdoc.com/string/index.html 2.W3Cschool https://www.w3cschool.cn/redis_all_about/redis_all_about-sfc726u6.html 3.Runoob https://www.runoob.com/redis/redis-commands.html 原文地址:https://

Redis快速起步及Redis常用命令大全

本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的相关问题,为了更方便的与大家一起探讨与学习,每个章节均提供尽可能详细的示例源码及注释,所有示例源码均可在javacourse-redis-in-action找到相关帮助! 本章目标: 什么是Redis Redis数据结构 Redis常用命令 什么是Redis Redis是一个功能强大的非关系型内存数

Laravel4常用命令语法大全汇总

从去年开始,晚上没事时,使用Laravel4的写了一个简单的CMS框架,其中还是积累了不少经验,在这里分享给大家. 在simplahub社区发了一篇帖子,就叫"Laravel4常用命令语法大全汇总". 连接地址: http://www.simplahub.com/forum.php?mod=viewthread&tid=38&extra=page%3D1

自学总结redis第二部分(redis常用命令、高级命令特性以及与java代码的结合)

六.redis多数据类型介绍(常用命令) 6.1前提操作 #如果前面的redis环境没搭好,那么可以先暂时在 "http://try.redis.io/"中实践redis命令部分.   #为了测试方便,把redis登录密码暂时撤销   #redis一共分为五种基本数据类型:String,Hash,List,Set,ZSet #所有命令都可以到"http://www.redis.cn/commands.html"  去搜索到. #首先由于redis是一个基于key-v

redis常用命令及高级特性

11.redis常用命令 keys * 返回所有的键 keys my* 模糊匹配 exists key 确认key是否存在 del key expire key time对现有的键设置过期时间[秒为单位] ttl key 查看过期时间,-1代表已过期 move 将当期数据库中的key移到其它数据库当中 select database_name 选择数据库 move key database_name persist key 取消过期时间,此时ttl key返回-1并不代表过期 randomkey

Mysql常用命令行大全——转载

转载地址:http://www.blogjava.net/supperchen/archive/2012/10/11/389340.html 第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是: mysql> 注意,如果是连接到另外的机器上,则

No-sql之redis常用命令

转自:http://blog.csdn.net/nicewuranran/article/details/51793760 No-SQL之Redis 介绍 Redis是一种基于内存存储的key-value高性能存储系统,类似memcached,但是redis支持丰富的数据结构类型,并且其还支持数据持久化到磁盘. Redis is a data structure server. It is open-source, networked, in-memory, and stores keys wi