• redis 学习笔记


    1,redis和memcache差别

    2,取数据

    读取键名为post:1散列类型键的title字段的值:

    HGET post:1 title

    3,安装--省略

    4,常用命令

    redis-server  启动

    redis-cli SHUTDOWN 停止

    select 1 选择1号数据库

    GET foo 正在使用的数据库是哪个

    SET bar 1 建立一个名为Bar的键

    KEYS * 获取所有redis中的键 , 遍历循环redis中所有的键,影响性能,不建议使用

    EXISTS key 判断是否有某个键,存在返回1,否则返回0

    DEL key  删除key

    redis-cli KEYS "user:*" | xargs redis-cli DEL 删除所有以user:开头的键

    TYPE key 获得键值的类型

     INCR num 如果值是以整数形式存在,则会递增,值不存在时候会报错

    对象类型(复数形式):count 的键来存储当前类型对象的数量,每次都会使用INCR递增

    INCRBY bar 2 增加指定的整数

    DECR key 减少指定的整数

    INCRBUFLOAT key increment 增加制定浮点数

    APPEND key value 向尾部追加值

    STRLEN key 获取字符串长度

    MGET  key [key ...] 同时获取多个值

    MSET key value [key value ...] 同时设置多个值

    1.【 set key value 】 存入一个key和值。如:set myname reson

    2.【 get key 】 读取一个key的值。

    3.【 del key 】 删除一个key。

    4.【 del key1 key2 ... keyN 】 删除多个key。如:del myname1 myname2

    5.【 exists key 】 判断一个key是否存在。

    6.【 type key 】 查看key的类型。

    7.【 rename key keyNew 】 重命名key名。如:rename myname myname2

    8.【 dbsize 】 查看当前库中的key的条数。

    9.【 expire key time 】 指定key的过期时间,单位为秒。如:expire myname 9(设置9秒后过期)

    10.【 ttl key 】 查看redis有多长时间过期,单位为秒。

    11.【 keys * 】 列出当前库中所有的key名。

    12.【 keys a* 】 列出当前库中所有以字符串“a"开头的key。

    13.【 select db-index 】 选择一个数据库,如选择第一个数据库:select 0;选择第二个 select 1;默认有16个数据库,这个值可以在redis.conf中配置。

    14.【 flushdb 】 清掉当前库中所有的key(生产环境下需谨慎操作)。

    15.【 flushall 】 清掉所有库中全部的key(生产环境下需谨慎操作)。

    1.【 mset key1 value1 key2 value2 ... keyN valueN 】 一次性存入多个key和值。

    2.【 mget key1 key2 ... keyN 】 一次性读取多个key。

    3.【 incr key 】 可以对key类型+1的操作(相当于编程语言里面的++),只能操作number型,操作字符串会报错。可对新值进行操作。

    4.【 decr key 】 可以对key类型-1的操作(相当于编程语言里面的--),只能操作number型,操作字符串会报错。

    5.【 incrby key num 】 同incr,对key的值加num,比如 incrby aa 10,对aa+10。

    6.【 decrby key num 】 同上,对key的值减num。

    7.【 append key value 】 对指定key的字符串进行追加,如果key为整形,会被转为字符串。如aa的值为9,执行append aa 10后,会变成910。 

    8.【 substr key start end 】 对key进行截取start到end个字符。如aa的值为:abcdef,执行substr aa 2 3后,返回“cd”。

     列表命令:

    LPUSH key value [value ...] 向列表两端增加数据

    RPUSH key value [value ...]   LPUSH numbers 2 3 增加多个

    LPOP numbers  从列表了断弹出数据

    RPOP numbers

    LLEN key 获取列表中元素的个数

    LRANGE numbers 0 2 获取列表片段

    LREM key count value 删除列表中指定的值 大于0从左边删除,小于0从右边删,等于0全部删除

    EXPIRE命令设置一个键的生存时间,到了时间Redis会自动删除他

    SET session:29e3d uid1314
    expire session:29e3d 900
    (inerger) 1 //返回1表示设置成功,返回0则表示键不存在或者设置失败

    TTL命令知道键还有多长时间被删除

    SET foo bar //设置键值
    EXPIRE foo 20 //设置键时间
    TTL foo  //查询还有多少,不存在返回-1(或者永久存在)
    PERSIST foo //设置为永久时间

      

    5,修改配置文件

    通过redis-server的启动参数port设置redis的端口号,还有是否开启持久化,日志级别等。

    redis-server /path/to/redis.conf

    redis.conf文件

    6,SET字符串例子

    <?php
    
    //加载Predis库的自动夹杂函数
    require './predis/autoload.php';
    
    //连接redis
    $redis = new PredisClient(array(
    	'host' => '127.0.0.1',
    	'port' => 6379
    ));
    
    
    if($_GET['name']){
    	$redis->set('name',$_GET['name']);
    }
    
    $name = $redis->get('name');
    
    ?>
    

      

     例子,获取总长度

    redis>SET key hello
    OK
    redis>APPEND key " world!"
    (integer)12
    

    7,事务

    redis>NULTI
    OK
    redis>SADD "user:1:following" 2
    QUEUED
    redis>SADD "user:2:following" 2
    QUEUED
    redis>EXEC
    1)(integer) 1
    1)(integer) 2
    

    先使用MULTI命令告诉Redis:"下面我发给你的命令属于同一个事务,你先不要执行,把他们存储起来".Redis回答可以
    接下来发送了两个SADD命令来实现关注和被关注,Redis返回QUEUED表示这两条命令已经进入被执行的事务队列当中了。
    当把所有同一个事务的命令都发布给Redis后,我们使用EXEC命令告诉Redis将等待执行的事务队列中所有的命令(即刚才所有返回QUEUED的命令)按照发送顺序依次执行。EXEC命令的返回值就是这些命令的返回值组成的列表,返回顺序和命令的顺序相同。

    Redis不支持事务回滚

    $isKeyExists = EXISTS rate.limiting:$IP
    if $isKeyExists is 1
    	$times = INCR rate.limiting:$IP
    	if $times > 100
    		print 访问频率超过了限制,请稍后再试
    		exit
    	else
    		MULTI
    	INCR rate.limiting:$IPEXPIRE $keyName,60
    	EXEC
    

    一分钟只能访问100次  

      

  • 相关阅读:
    IO流
    简单JSON
    开发流程
    命名规范
    策略模式
    Git的使用
    Markdown的使用
    代理模式
    装饰者模式
    POJ 2976 3111(二分-最大化平均值)
  • 原文地址:https://www.cnblogs.com/xiaoxiaomengxiangjia/p/5393446.html
Copyright © 2020-2023  润新知