redis_1

作者: 738bc070cd74 | 来源:发表于2016-06-08 11:18 被阅读34次

    启动

    启动服务端

    ./redis-server
    

    指定要加载的配置文件

    ./redis-server ../redis.conf
    

    默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。

    启动客户端

    ./redis-cli
    

    //用set指令来设置key、value

    127.0.0.1:6379> set name "roc" OK
    

    //来获取name的值

    127.0.0.1:6379> get name "roc"
    

    //通过客户端来关闭redis服务端

    127.0.0.1:6379> shutdown 
    127.0.0.1:6379>
    

    数据结构

    redis是一种高级的key:value存储系统,其中value支持五种数据类型:
    1.字符串(strings)
    2.字符串列表(lists)
    3.字符串集合(sets)
    4.有序字符串集合(sorted sets)
    5.哈希(hashes)
    而关于key,一下几点需要注意:
    1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
    2.key也不要太短,太短的话,key的可读性会降低;
    3.在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。

    字符串

    strings类型是一个很基础的数据类型

    set mystr "hello world!" //设置字符串类型
    get mystr //读取字符串类型
    

    字符串可以进行数值操作

    incr_num.png

    在遇到数值操作时,redis会将字符串类型转换成数值。由于INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果

    list

    redis中的lists在底层实现上并不是数组,而是链表。对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。链表型lists的元素定位会比较慢,而数组型lists的元素定位就会快得多。

    lists的常用操作包括LPUSH、RPUSH、LRANGE等。我们可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素。

    127.0.0.1:6379> lpush tlist "1"
    (integer) 1
    127.0.0.1:6379> rpush tlist "2"
    (integer) 2
    127.0.0.1:6379> lpush tlist "0"
    (integer) 3
    127.0.0.1:6379> lrange tlist 0 1
    1) "0"
    2) "1"
    127.0.0.1:6379> lrange tlist 0 -1
    1) "0"
    2) "1"
    3) "2"
    127.0.0.1:6379> 
    

    lists的应用相实例:
    1.我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。
    2.利用LRANGE还可以很方便的实现分页的功能。
    3.在博客系统中,每片博文的评论也可以存入一个单独的list中。

    set

    redis的集合,是一种无序的集合。集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等

    127.0.0.1:6379> sadd tset "one"
    (integer) 1
    127.0.0.1:6379> sadd tset "two"
    (integer) 1
    127.0.0.1:6379> smembers tset
    1) "one"
    2) "two"
    127.0.0.1:6379> sismember tset "one"
    (integer) 1
    127.0.0.1:6379> sismember tset "one1"
    (integer) 0
    127.0.0.1:6379> 
    sunion tset tset  //求并集
    

    zset

    有序集合(sorted sets)。有序集合中的每个元素都关联一个序号(score),这便是排序的依据。我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等

    127.0.0.1:6379> zadd tzset 1 "baidu"
    (integer) 1
    127.0.0.1:6379> zadd tzset 3 "360"
    (integer) 1
    127.0.0.1:6379> zrange tzset 0 -1
    1) "baidu"
    2) "360"
    127.0.0.1:6379> zrange tzset 0 -1 withscores 
    1) "baidu"
    2) "1"
    3) "360"
    4) "3"
    127.0.0.1:6379> 
    

    hash

    用于处理对象数据

    127.0.0.1:6379> hmset user:001 username huben password 123456
    OK
    127.0.0.1:6379> hgetall user:001
    1) "username"
    2) "huben"
    3) "password"
    4) "123456"
    127.0.0.1:6379> hset user:001 password 12345678
    (integer) 0
    127.0.0.1:6379> hgetall user:001
    1) "username"
    2) "huben"
    3) "password"
    4) "12345678"
    127.0.0.1:6379> 
    

    相关文章

      网友评论

          本文标题:redis_1

          本文链接:https://www.haomeiwen.com/subject/taphdttx.html