我们可能会遇到需要运行的某些命令在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 !
我记得有个key名称中可能包含e keys *eeg3:我记得有个key名称可能是site或者sitl keys sit[e|l]7.返回随机一个key名称 randomkey8.
我记得有个key名称中可能包含e keys *eeg3:我记得有个key名称可能是site或者sitl keys sit[e|l]7.返回随机一个key名称 randomkey8.
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 中关于 发布与订阅 的全部命令。 发布与订阅的关系 发布与订阅之间的关系是,订阅者通过订阅指定的频道来接收发布者发布的消息,发布与订阅的示意图如下所示。 ? ? 前面的控制台别进行操作,再新打开一个 Redis 的命令行控制台,然后针对 news.it 和 news.health 两个频道分别发布消息。 3、psubscribe 该命令的作用是:按照指定的模式订阅相关的频道。 为了进行测试,再打开一个 Redis 的命令行控制窗口,订阅一个 news.dt 的频道。 再打开一个 Redis 的命令行窗口来进行测试,命令如下。 127.0.0.1:6379> psubscribe news.?t Reading messages...
通用命令介绍 Redis 通用命令是一些 Redis 下可以作用在常用数据结构上的常用命令和一些基础的命令,比如删除键、对键进行改名、判断键是否存在等。 简单说,就是 keys 分类的命令,如下图。 ? 上图中圈中的部分,就是所谓的通用的命令。如果想要在 Redis 中查看相关的命令也可以使用 help 命令来进行查看,命令如下。 常用 keys 命令 为了大家能够直接复制命令进行测试,下面我就不截图了。 test3" 2) "url" 3) "test1" 4) "test2" 127.0.0.1:6379> keys test* 1) "test3" 2) "test1" 3) "test2" 在 Redis 127.0.0.1:6379> randomkey "test3" 127.0.0.1:6379> randomkey "url" 127.0.0.1:6379> randomkey "test2" 8、
字符串命令 Redis种的字符串有三种类型的值:字节,整数和浮点数 (1)命令列表 SET:SET key value ——设置存储在给定键种的值 GET:GET key value ——获取存储在给定键种的值 GETRANGE命令由以前的SUBSET命令改名而来的,如果是2.6或以上redis版本,使用getrange()方法来获取字串 2. 散列命令 Redis的散列将多个键值对存储在Redis的键里面 (1)散列常用命令 HSET:hset key-name key value ——为散列添加键值对 HGET:hget key-name 1) "zhangsan" 2) "17" 3) "man" redis 127.0.0.1:6379> hincrby person age 8 (integer) 25 redis 127.0.0.1 ),val.decode('utf-8'))) else: print('{}:{}'.format(key,val.decode('utf-8'
Redis 支持多种数据结构,比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 集合 相关的命令,也就是关于 Sets 相关的命令,如下图。 ? 上图中用红色圈中的部分,就是关于 集合 相关的命令。如果想要在 Redis 中查看相关的命令也可以使用 help 命令来进行查看,命令如下。 常用 Sets 相关命令 Sets 数据类型是 Key 对应的 Value 的类型,在 Redis 中所有的 Key 都是字符串,所谓的数据类型表示的是 Value 的类型。 "php" 3) "c++" 4) "python" 5) "lua" 127.0.0.1:6379> srandmember lang 1 1) "java" 可以看到,每次返回的元素是不同的 8、 Redis 常用的几种基本数据类型总结完成后,我会再逐步的梳理 Redis 的各种应用场景,希望大家可以喜欢。 ?
Redis 支持多种数据结构,比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 哈希 相关的命令,也就是关于 Hashes 相关的命令,如下图。 上图中用红色圈中的部分,就是关于 哈希 相关的命令。如果想要在 Redis 中查看相关的命令可以使用 help 命令来进行查看,命令如下。 3) "gender" 4) "femle" 5) "age" 6) "20" 7) "weight" 8) "65" 6、hkeys 该命令的作用是:获取哈希的所有字段,但是不获取值,该命令的用法如下 ) 0 8、hlen 该命令的作用是:获取指定哈希中字段的数量,该命令的用法如下: 127.0.0.1:6379> hlen user001 (integer) 4 127.0.0.1:6379> hlen (integer) 8 127.0.0.1:6379> hstrlen user001 age (integer) 2 11、hvals 该命令的作用是:获取指定哈希的所有值,不获取字段名称,该命令的用法如下
帮助命令 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分支 0,NULL,1,1,1,0,0} }; redisCommandTable为一个数组,每个项表示一个redis命令,其中第一个表示命令的名字,第二个为实际处理的函数,第3个为参数的个数,其它的先不详细讨论 三、写在最后 最后我们还是要问自己我们的场景中是否有增加Redis命令的必要,如果需要则要把握好各层之间的职责,不要让Redis最后变成处理业务去了;一般来说中间件层一般处理比较通用的功能,越到下面的层应该越稳定
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 个元素的数组,数组中的元素各不相同
"slave-priority"2) "100"3) "slave-serve-stale-data"4) "yes"5) "slave-read-only"6) "yes"7) "slaveof"8)
现代计算机用二进制作为信息的基本单位,一个字节等于8位。合理的利用位能够有效的提高内存使用率和开发效率。Bitmaps本身不是一种数据结构,实际上它就是字符串,但是他可以对字符串的位进行操作。 6379> setbit unique:users:2019-04-30 5 1 (integer) 0 127.0.0.1:6379> setbit unique:users:2019-04-30 8 -04-28 unique:users:2019-04-30 (integer) 3 127.0.0.1:6379> bitcount user:or:2019-04-28-30 (integer) 8
四.编写启动脚本 1.根据情况填写对应变量 vim man-redis #! /bin/bash install_dir=/usr/local server_dir=redis log_dir=/var/log port=6379 if [[ "$1" == "start" ]] }/bin/redis-server ${install_dir}/${server_dir} &> ${log_dir}/${server_dir}/redis.log & elif [[ "$1" ' '{print $1}'` kill -9 $pid fi else echo "start | stop" fi 2.添加权限,并加入到bin目录下,后面就可以当命令一样使用 mv man-redis /usr/local/bin chmod +x /usr/local/bin/man-redis man-redis start
为什么要用事务 Redis的单个命令是原子性的(比如get set mget mset),如果涉及到多个命令的时候,需要把多个命令作为一个不可分割的处理序列,就需要用到事务。 Redis的事务涉及到四个命令: 命令 说明 multi 开启事务 exec 执行事务 discard 取消事务 watch 监视 事务用法 案例:张三(zhangsan)和李四(lisi)各有100 这个显然不符合我们对原子性的定义,也就是我们没办法用Redis的这种事务机制来实现原子性,保证数据的一致。 为什么在一个事务中存在错误,Redis不回滚? 这种方式也有其合理之处:只有当被调用的Redis命令有语法错误时,这条命令才会执行失败(在将这个命令放入事务队列期间,Redis能够发现此类问题),或者对某个键执行不符合其数据类型的操作:实际上,这就意味着只有程序错误才会导致 Redis命令执行失败,这种错误很有可能在程序开发期间发现,一般很少在生产环境发现。
浅浅了解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 :6379[1]> select 2 OK 127.0.0.1:6379[2]> select 0 OK /*刷新库,因为redis是缓存数据库所以当刷新完 库中的内容将被清除*/ 127.0.0.1 :6379> flushdb OK /* redis中存取值都是以key与value来存取 输入set会自动得到生成格式 输入get同样也会生成获取格式 */ 127.0.0.1:6379> set test:student ccc (integer) 2 127.0.0.1:6379> zrange test:student 0 2 1) "aaa" 2) "bbb" 3) "ccc" /* 全局命令