redis学习笔记

重新复习兄弟连redis视频课程,为了便于记忆,记录一下笔记:

redis应用场景:

  1. 取最新N个数据。

  2. 排行榜,Top N.

  3. 精确设置过期时间的应用。

  4. 计数器应用,新浪微博主要应用。

  5. Uniq操作,获取某段时间数据排重值。

  6. 实时操作,反垃圾系统。

  7. Pub/Sub消息系统。

  8. 队列

  9. 缓存

Redis下载安装:redis.io/download

#tar -zxvf redis.tar.gz

#cd redis

#make(32位机器make CFLAGS="-march=i686")

#cd src

#make install

注意,不需要config,make install 需要进入src目录。由于redis不能指定安装目录需要自己整理

#mkdir -p /usr/local/redis/bin  /usr/local/redis/etc

#mv redis.conf /usr/local/redis/etc

#mv mkreleasehdr.sh redisbenchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

redis默认端口6379

启动服务 #/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

修改 daemonize yes  后台启动

客户端连接 #/usr/local/redis/bin/redis-cli

停止:

 #/usr/local/redis/bin/redis-cli shutdown

#pkill redis-server 

>keys * 显示所有key

>exists key 是否存在

>del key 删除

>expire key 10 设置key10秒期

>ttl key 查看key过期剩余时间

>persist key 转为不过期

>select 0 选择到0数据库

>move key 1  移动到1数据库

>randomkey 随机返回key

>rename key key_new

>type key 

服务命令

>ping

>echo 'ggo'

>dbsize   key的数目

>info     信息

>config get * 配置获取

>flushdb 清空当前数据库

>flushall 清空所有数据库

安全性设置

修改redis.conf requirepass 

>auth password 

redis-server -a password

操作

1.string

>set name jim

>get name

>set name jim green

>setnx name jim

>setex color 10 red

>set email [email protected]

>setrange email 5 sohu.com

>mset k1 v1 k2 v2

>msetnx 

>getset 设置key的值,返回旧值

>getrange email 0 4   获取子字符串

>mget key1 key2 key3

>incr key

>incrby key 3

>incrby key -5  //减

>decr key

>decrby key 2 减

>decrby key -5 加

>append key str

>strlen key

2 hash  添加删除都是O(1),适合存储对象,比string占用内存更少

>hset hashtable field value

>hget hashtable field

>hsetnx hashtable field value

>hmset hashtable field1 value1 field2 value2 .....

>hmget hashetale field1 field2 ...

>hincrby hashetale age -3

>hexists user:001 age

>hlen hashtable

>hgetall user:001

>hdel user:001 age

>hkeys myhash

>hvals myhash

3. list  栈,队列

>lpush mylist val

>lrange mylist 0 -1  从头到尾

>lpop mylist

>rpush  rpop

>linsert mylist before world my

>linsert mylist after world my

>lset mylist 0 your  //0表示左边第一位 修改为your

> lrem mylist 1 your //删除1个your  ,如果是0 ,删除所有

>ltrim mylist 1 -1  //保留1之后的值,也就是删除最左边的

>rpoplpush list1 list2

>rpoplpush list1 list1

>lindex list1 0  返回指定位置的元素

>llen list1

4 set-string的无序集合,添加删除,查找都是O(1)

>sadd set1 hello

>smembers set1

>srem set1 hello

>spop set1  //随机弹出

>sdiff set1 set2 set3

>sdiffstore set4 set1 set2 //set1,set2的差集存到set4

>sinter set1 set2

>sinterstore set5 set1 set2

>sunion set1 set2

>sunionstore set6 set1 set2

>smove set2 set1 two  //set2中two移到set1

>scard set1  元素个数

>sismember set1 one

>srandmember set1 //随机返回不删除

有序集合

>zadd zset1 1 one

>zrange zset1 0 -1 withscores

>zrem zset1 one

>zincrby zset1 2 one

>zrank zset1 one   获取顺序值,按照score排序

>zrevrank zset1 one  按照score排序从大到小排序的顺序值

>zrevrange zset1 0 -1 withscores

>zrangebyscore zset1 1 3 withscores

>zcount zset1 1 5   返回score 在1-5的元素个数

>zcard zset1

>zremrangebyrank zset1 0 1



<?php

try {


    $redis = new Redis();

    $ret = $redis->connect('localhost');

    if ($ret === false) {

die($redis->getLastError());

    }

 

    $ret = $redis->auth('123456');

    if ($ret === false) {

die($redis->getLastError());

    }

 

    

    //$redis->flushdb();

    $ret = $redis->set("key", "value");

    if ($ret === false) {

die($redis->getLastError());

    } else {

echo "OK";

        echo '<br/>';

        $ret = $redis->get("key");

        print_r($ret);

        echo '<hr/>keys:<br/>';

        $keys = $redis->keys('*');

        var_dump($keys);


       echo '<hr/>db size:<br/>';

        echo $redis->dbSize();

        echo '<hr/>db info:<br/>';

        $info = $redis->info();

        print_r($info);


        echo '<hr/>dbindex:<br/>';

        $dbindex = $redis->select(4);

        var_dump($dbindex);

        echo '<hr/>db size:<br/>';

        echo $redis->dbSize();

        echo '<hr/>db info:<br/>';

        $info = $redis->info();

        print_r($info);

        $redis->hMset('test',array('key1'=>'v1','key2'=>'v2'));

        echo '<hr/>keys:<br/>';

        $keys = $redis->keys('*');

        var_dump($keys);

        $dbindex = $redis->getDBNum();

        echo '<hr/>db index:<br/>';

        var_dump($dbindex);

    }

 

} catch (RedisException $e) {

    die("Uncaught exception " . $e->getMessage());

}


你可能感兴趣的:(redis)