redis的常规使用

以windows版的redis为例

下载

github上下载

https://github.com/MicrosoftArchive/redis/releases

可以下载zip版本,解压到一个目录就行,例如我的目录是:D:\redis

启动

打开一个 cmd 窗口 使用 cd 命令切换目录到 D:\redis 运行如下命令即可:

redis-server.exe redis.windows.conf

如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:

这时候另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。

切换到 redis 目录下运行:

redis-cli.exe -h 127.0.0.1 -p 6379

设置键值对:

set myKey helloworld

取出键值对:

get myKey

Redis 数据类型

Redis支持五种数据类型:<1>string(字符串),<2>hash(哈希),<3>list(列表),<4>set(集合)及<5>zset(sorted set:有序集合)。

1)String类型的操作命令

      Redis 的 SET 和 GET 命令

2)hash类型的操作命令

      HMSET, HGET 命令

3)list类型的操作命令

   lpush,lrange 命令
4)set类型的操作命令
   sadd,smembers 命令

5)zset(sorted set:有序集合)类型的操作命令

   zadd命令,ZRANGEBYSCORE

常用命令

1、Expire  --> expire设置过期时间的单位是秒,如设置name的过期时间为1000秒,超过时间后会自动删除key,但是不一定是立即删除,因为redis的过期策略是惰性删除和定期删除的策略。

语法格式:Expire KEY_NAME TIME_IN_SECONDS

   案例:expire name 1000

 

redis和lua结合

1、调用Lua脚本的语法:
      redis-cli.exe --eval path/to/redis.lua KEYS[1] KEYS[2] , ARGV[1] ARGV[2] ...   --键和值之间有一个逗号,不能少。

      eg: d:\redis>redis-cli.exe -h localhost -p 6379 --eval d:\redis\redis.lua name age , lee
     --eval,告诉redis-cli读取并运行后面的lua脚本
     d:\redis\redis.lua,是lua脚本的位置
     KEYS[1] KEYS[2],是要操作的键,可以指定多个,在lua脚本中通过KEYS[1], KEYS[2]获取。【特别注意】这些键要现在redis中存在,不然就获取不到对应的值。
     ARGV[1] ARGV[2],参数在lua脚本中通过ARGV[1], ARGV[2]获取。

      local name=redis.call("get",KEYS[1])
      local age=redis.call("get",KEYS[2])
      if name=="giaa" then   --先在redis中设置以一个name且值是giaa
           redis.call("set",KEYS[1],ARGV[1])
           redis.call("incr",KEYS[2])
     end

     以上代码保存为redis.lua,并存放在d:\redis\中即可。

2、在脚本中调用redis命令
           在脚本中可以使用redis.call函数调用Redis命令

              redis.call('set', 'foo', 'bar')
              local value=redis.call('get', 'foo') --value的值为bar

              redis.call函数的返回值就是Redis命令的执行结果

              Redis命令的返回值有5种类型,redis.call函数会将这5种类型的回复转换成对应的Lua的数据类型。

3、redis命令行中的lua代码
             EVAL语法: eval lua_code numkeys key [key ...] arg [arg ...]

              通过key和arg这两类参数向脚本传递数据,它们的值在脚本中分别使用KEYS和ARGV两个表类型的全局变量访问。

              script: 是双引号中的lua代码

              numkeys:表示有几个key,分别是KEYS[1],KEYS[2]...,如果有值,从第numkeys+1个开始就是参数值,ARGV[1],ARGV[2]...

             注意: EVAL命令依据参数numkeys来将其后面的所有参数分别存入脚本中KEYS和ARGV两个table类型的全局变量。当脚本不需要任何参数时,也不能省略这个参数(设为0)

    eg:localhost:6379> eval "return redis.call('set',KEYS[1],ARGV[1])" 1 sex female

4、案例 使用Lua控制IP访问频率

      local visitNum = redis.call('incr', KEYS[1])
      if visitNum == 1 then
            redis.call('expire', KEYS[1], ARGV[1])
     end
     if visitNum > tonumber(ARGV[2]) then
            return 0
    end
    return 1;

      ## LimitIP:127.0.0.1为key, 10 3表示:同一IP在10秒内最多访问三次
     ## 前三次返回1,代表未被限制;第四、五次返回0,代表127.0.0.1这个ip已被拦截

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值