在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。 在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。 "c" 127.0.0.1:6379> lpop mylist "a" 127.0.0.1:6379> lpop mylist "b" 127.0.0.1:6379> lpop mylist "c" 4、 127.0.0.1:6379> llen mylist (integer) 4 6、LRANGE key start stop 从一个列表获取元素,其中start/stop都是下标,并且都可以是负数, mylist 2 a (integer) 2 127.0.0.1:6379> lrange mylist 0 -1 1) "b" 2) "c" 3) "a" 4) "d" 5) "e" 上面的命令指示
我们可能会遇到需要运行的某些命令在godis中不存在的情况,这个时候我们可以使用其原生的方式运行命令,为了方便使用,封装了一个方法,用于简化这个过程。 需要注意的是,执行命令的返回结果返回的是interface{},需要对其进行解析成可读的实体结构。 传递的参数logger是用来打印日志的: // RunRedisCmd 运行redis命令 func RunRedisCmd(redis *godis.Redis, logger *log.Logger = nil { logger.Println(cmdStr) } err := redis.SendByStr(cmd, byteArr...) if err ! ) rsl, err := utils.RunRedisCmd(redis, logger, "set", "userage", "1") if err !
Keyn4.修改key名称 rename key newkey 注:如果newkey已存在,则newkey的原值被覆盖5.修改key名称(解决已经存在newkey,即newkey不存在时
Keyn4.修改key名称 rename key newkey 注:如果newkey已存在,则newkey的原值被覆盖5.修改key名称(解决已经存在newkey,即newkey不存在时
1.String常用命令 2.list常用命令 特点: 存取有序、有下标、允许重复 存值 命令 说明 lpush key value[value …] 从列表的头部插入数据 rpush key value [value …] 从列表的尾部插入数据 取值 命令 说明 lrange key start stop 获取指定列表的从start开始查看到stop的全部数据,stop为-1,代表最后一个 lpop key 从头部移除数据 rpop key 从尾部移除数据 其他操作 命令 说明 lrem key count value 删除当前列表中count个value,count>0从头删,count<0从尾删 ,count=0,删除全部 3.set常用命令 特点: 存取无序、无下标、不允许重复 4.zset常用命令 5.Java操作Redis
redis-cli 中。 使用命令 info Keyspace 查看存储数据的相关信息。
Redis 命令 Redis命令用于在redis服务上执行操作。 要在redis服务上执行命令需要一个redis客户端。Redis客户端在我们之前下载的的redis的安装包中。 语法 Redis客户端的基本语法为: [root@localhost ~]# redis-cli 实例 以下实例讲解了如何启动 redis 客户端: 启动redis客户端,打开终端并输入命令redis-cli 该命令会连接本地的redis 服务。 PING命令,该命令用于检测 redis服务是否启动。 在远程服务上执行命令 如果需要在远程redis服务上执行命令,同样我们使用的也是redis-cli命令。
redis-cli 中。 使用命令 info Keyspace 查看存储数据的相关信息。
如果想要在 Redis 中查看相关的命令可以使用 help 命令来进行查看,命令如下: 127.0.0.1:6379> help @pubsub 按下回车后,可以看到 发布与订阅 相关命令的说明 前面的控制台别进行操作,再新打开一个 Redis 的命令行控制台,然后针对 news.it 和 news.health 两个频道分别发布消息。 3、psubscribe 该命令的作用是:按照指定的模式订阅相关的频道。 为了进行测试,再打开一个 Redis 的命令行控制窗口,订阅一个 news.dt 的频道。 再打开一个 Redis 的命令行窗口来进行测试,命令如下。 127.0.0.1:6379> psubscribe news.?t Reading messages... 4、pubsub 该命令的作用是:查看关于频道相关的信息。
通用命令介绍 Redis 通用命令是一些 Redis 下可以作用在常用数据结构上的常用命令和一些基础的命令,比如删除键、对键进行改名、判断键是否存在等。 简单说,就是 keys 分类的命令,如下图。 ? 上图中圈中的部分,就是所谓的通用的命令。如果想要在 Redis 中查看相关的命令也可以使用 help 命令来进行查看,命令如下。 pexpire 命令用来 设置 key 的有效时间以毫秒为单位 pexpireat 命令用来 设置 key 的到期 UNIX 时间戳以毫秒为单位 4、keys 命令 keys 命令用来 查找所有匹配给定的模式的键 127.0.0.1:6379> keys * 1) "test3" 2) "url" 3) "test1" 4) "test2" 127.0.0.1:6379> keys test* 1) "test3 " 2) "test1" 3) "test2" 在 Redis 中是支持模糊查询的,它有 3 个通配符,分别是:*、 ?
字符串命令 Redis种的字符串有三种类型的值:字节,整数和浮点数 (1)命令列表 SET:SET key value ——设置存储在给定键种的值 GET:GET key value ——获取存储在给定键种的值 GETRANGE命令由以前的SUBSET命令改名而来的,如果是2.6或以上redis版本,使用getrange()方法来获取字串 2. 集合命令 Redis的集合以无序的方式来存储多个各不相同的元素,可以快速的对集合进行添加,删除、元素检查、组合和关联等操作 (1)常用集合命令 SADD:sadd key item [item…] "a" 4) "e" 5) "b" 4. 散列命令 Redis的散列将多个键值对存储在Redis的键里面 (1)散列常用命令 HSET:hset key-name key value ——为散列添加键值对 HGET:hget key-name
Redis 支持多种数据结构,比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 集合 相关的命令,也就是关于 Sets 相关的命令,如下图。 ? 上图中用红色圈中的部分,就是关于 集合 相关的命令。如果想要在 Redis 中查看相关的命令也可以使用 help 命令来进行查看,命令如下。 127.0.0.1:6379> help @set 在按下回车后,可以看到相应分类命令的说明,如下图。 ? 图中就是部分关于 Sets 相关的部分命令。 常用 Sets 相关命令 Sets 数据类型是 Key 对应的 Value 的类型,在 Redis 中所有的 Key 都是字符串,所谓的数据类型表示的是 Value 的类型。 Redis 常用的几种基本数据类型总结完成后,我会再逐步的梳理 Redis 的各种应用场景,希望大家可以喜欢。 ?
Redis 支持多种数据结构,比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 哈希 相关的命令,也就是关于 Hashes 相关的命令,如下图。 上图中用红色圈中的部分,就是关于 哈希 相关的命令。如果想要在 Redis 中查看相关的命令可以使用 help 命令来进行查看,命令如下。 > hgetall user002 1) "gender" 2) "femle" 3) "age" 4) "24.5" 5) "weight" 6) "65" 总结 Redis 的哈希类型提供的命令相对比较简单 在后面的内容中,我会逐步的再整理其他相关的命令,还有基础数据结构的一些应用场景。而且,我也会整理一些我看过的 Redis 的源码进行分享。 我希望能较为完整的将我对 Redis 的所学进行整理,方便自己的回顾。
帮助命令 Redis 有很多的命令,想要一下子记住那么多的命令是不太现实的,而且也没有必要全部背会,因为 Redis 提供了功能帮助命令,只要使用帮助命令即可。 Redis 的帮助命令是 help,和大多数的其他工具类似。 此时,Redis 客户端自动切换到了 hmset 命令,如果是我们想要查看到命令,按下回车键即可。 这就是 Redis 的帮助命令,在刚刚接触 Redis 的时候,会经常使用该命令来查看帮助,快速、直接、省时的 Redis 帮助命令。 在掌握了帮助命令之后,我们就可以方便快捷的展开 Redis 的学习了,因为对于 Redis 的学习,大部分就是在学习用 Redis 提供的命令来管理和使用 Redis。
一、背景 Redis因高性能、轻量的优秀特性成了互联网公司缓存的标配,有的时候我们想增加一些自定义的命令,主要是重度使用Redis的场景,像抢购的场景,要保证多个Redis命令的事务性,如果没有很好的原子性保证 今天我们以一个实际的案例讲述如何增加一个Redis命令,这个命令主要用于防刷的场景: 经常要将某个IP或某个用户封禁一段时间,如果不用这个命令的方案如下: 先incr下,然后判断是否为1,是1则设置过期时间 :表示增加到多少为止不增加了,如果设为10,则返回的最大值就是11,返回11表示已经超出了; 二、编写命令 1、下载redis代码 本文所用Redis版本为3.2.11; 下载代码并切到3.2.11分支 结构体中增加新命令 struct redisCommand redisCommandTable[] = { …… {"incexpire",incrExpireCommand,4,"wm", 0,NULL,1,1,1,0,0} }; redisCommandTable为一个数组,每个项表示一个redis命令,其中第一个表示命令的名字,第二个为实际处理的函数,第3个为参数的个数,其它的先不详细讨论
Sadd命令 Redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。 假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。 语法 redis Sadd 命令基本语法如下: redis 127.0.0.1:6379> SADD KEY_NAME VALUE1..VALUEN 可用版本:>= 1.0.0 返回值 被添加到集合中的新元素的数量 " 2) "foo" redis 127.0.0.1:6379> SCARD myset (integer) 2 Redis Smembers 命令返回集合中的所有的成员。 Redis Scard 命令返回集合中元素的数量。 Srandmember 命令 Redis Srandmember 命令用于返回集合中的一个随机元素。 从 Redis 2.6 版本开始, Srandmember 命令接受可选的 count 参数: 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同
存储(实现)原理 Redis用intset或hashtable存储set。如果元素都是整数类型,就用inset存储。如果不是整数类型,就用hashtable(数组+链表的存来储结构)。 redis.conf set-max-intset-entries 512 127.0.0.1:6379> sadd lset 1 2 3 3 4 5 6 7 (integer) 7 127.0.0.1 strset a b c d e f f (integer) 6 127.0.0.1:6379> object encoding strset "hashtable" Set集合类型有一些集合的一些特有命令 比如: 命令 说明 sdiff key1 [key2] 两个set集合取差集 sinter key1 [key2] 两个set集合取交集 srandmember key [count] 返回集合中一个或多个随机数 命令集合之后统一整理,不再这里赘述了
浅浅了解redis基础命令 Microsoft Windows [版本 10.0.19044.2251] (c) Microsoft Corporation。保留所有权利。 /* redis默认是分为16个库用索引来获取通过select x来切换库 */ C:\Users\dengmi>redis-cli 127.0.0.1:6379> select 1 OK 127.0.0.1 test:student ccc (integer) 2 127.0.0.1:6379> zrange test:student 0 2 1) "aaa" 2) "bbb" 3) "ccc" /* 全局命令 count" 5) "test:user" 127.0.0.1:6379> keys test* 1) "test:ids" 2) "test:teachers" 3) "test:student" 4) test:student 10 (integer) 1 127.0.0.1:6379> keys * 1) "test:ids" 2) "test:teachers" 3) "test:student" 4)
Redis的存储是以key-value的键值对的形式存储的,其中key都是String类型,value常见的就是以下的5种。 1. redis的list是按插入顺序排序的,可以添加的一个节点到链表的头部(头插)或者尾部(尾插),是一个双向链表,对两端的操作性能会比较高,对中间节点的操作性能相对来说较差(因为得通过指针对遍历对应的节点 value2 value3 --向list的头部(最右边)添加多个元素 lpop myList -- 将 list的尾部(最左边)元素取出 rpop myList --将 list的尾部(最右边)元素取出 4, Set Redis的set和list相似,只不过可以自动去重。 (集合里的每个节点是唯一的,但是评分却可以是相同的),利用这个特性我们可以利用redis来实现排行榜。也可以很快速的获取到一个区间内的节点。
redis是当前使用很广泛的一款内存key-value软件,有时需要查询下目前redis内存里面有哪些满足条件的键值,在线上系统一定不要使用keys命令,该命令会导致redis停止一切工作,如果redis 键值要很多的话会导致redis长时间内都不会响应其他任何命令,这个时候scan命令就呼之欲出了,scan命令可以达到keys命令的效果同时又不会redis出现类似stop-the-world事件的发生, 127.0.0.1:7006> scan 0 match h* count 100 1) "0" 2) 1) "he2lo" 2) "h22" 3) "h16" 4) , 127.0.0.1:7006> scan 9 1) "0" 2) 1) "h26" 2) "h12" 3) "he5lo" 4) "hello" 127.0.0.1:7006 PS:不同版本redis命令可能会略有不同,执行前可以使用help scan查看具体命令 参考文章: 1、http://doc.redisfans.com/key/scan.html 2、http://