redis基本操作

jopen 5年前

  • redis安装简单说明

    cd redis-3.0.0

    make

    cd src

    make install

    mkdir -p /usr/local/redis/bin/ /usr/local/redis/etc #把所有命令移动到bin,把配置文件移动到etc下


  • redis介绍

    键值存储,它是数据结构服务器:字符串string,hash,链表list,集合set和有序集合zset。支持push,pop和add,remove。为了保证效率,都是存储在内存中。周期性把数据更新到磁盘中,或者记录到log里面,类似于mysql的binlog。


  • redis适用场合

    1: 应用程序直接redis数据库。应用程序直接向redis读写操作。

    2: 应用程序直接访问redis,如果失败,访问mysql。redis的数据和mysql数据进行同步。

    适用操作:

    1: 取最新的N个数据

    2: 排行榜应用top n

    3: 精确设置过期时间的应用、针对键来设置过期

    4: 计数器

    5: uniq操作

    6: pub/sub构建实时消息

    7: 队列系统

    8: 缓存


  • redis String操作

    String是redis最简单的数据类型,可以存放图像(二进制)和对象(序列化)。下面是一些string的操作:

    set name helloworld #设置name键

    get name #获取name值

    mset key1 test1 key2 test2 #设置多个值

    strlen name #查看长度


  • redis hash操作

    hset user:001 name helloworld #设置user:001的name字段

    hget user:001 name #获取user:001的name值

    hmset user:002 name helloworld age 20 #批量设置

    hmget user:002 name age #批量获取

    hkeys user:002 #获取user:002的所有键

    hvals user:002 #获取user:002的所有值

    hgetall user:002 #获取user:002的所有键值


  • redis list(双向链表)

    lpush list1 hello #从list1头压入hello

    lpush list1 world #从list1头压入world

    lrange list1 0 -1 #取出list1的,先取出world  再取出hello。栈

    rpush list2 hello #从list2尾压入hello

    rpush list2 world #从list2尾压入world

    lrange list2 0 -1 #取出list2,先hello, 后world。队列

    llen list2 #返回链表中的元素。


  • redis set(无序集合)

    sadd set2 one #向集合set2添加one

    smembers set2 #查看集合set2里面的元素

    scard set3 #返回set3中有几个元素


  • redis zset(有序集合)

    zadd zset1 1 one #向zset1添加one,顺序号为1

    zrange zset1 0 -1 withscores #查看zset3中的值和顺序号

    zcard zset3 #返回zset3元素的个数


  • redis日常操作命令

    select 1 #选择数据库,默认是0

    keys * #

    keys * #取出所有key

    keys my* #模糊匹配

    quit exit #退出客户端

    dbsize #返回key的数量 select 0, 1, 15试下

    info #查看redis信息

    config get * #获取配置的设置

    flushdb #清空当前数据库

    flushall #清空所有数据库


  • redis密码设置

    配置文件:requirepass helloworld  添加这个配置项

    怎么验证密码: redis-cli -a helloworld ,或者先用redis-cli登录后再auth helloworld验证。

    从服务器怎么设置主服务器的密码验证:masterauth helloworld


  • slave主从配置

    一个master可以拥有多个slave,多个slave跟master都相连。重要:slave也可以跟slave相连。

    主从复制master将数据库快照并发送给slave。

     

    从服务器的配置:

    slaveof 172.16.0.4 6379

    masterauth helloworld #如果需要配置密码,则配置masterauth

    info可以查一下主从复制信息


  • redis的事务

    multi #进入事务的上下文

    set age 10 #会放到队列里面

    set age 20 #还会放队列

    exec #然后执行事务

    discard #不执行事务,事务回滚


  • redis持久化

    1: snapshotting(快照,将数据存在文件里面) 默认方式,二进制方式

    2: append-only(将操作存在文件里面)

     

    数据持久化:n秒内如果有m个key修改,则保存。

    save 900 1  #如果在900s有1个key被修改,则保存

    save 300 10 #如果300s内有10key被修改,则保存

    save 60 10000 #如果60s内有10000个key被修改,则保存

     

    操作持久化:每次操作都写到文件中。重启时候,重新执行一次aof文件即可。由于系统还可能存在缓存。

    appendonly yes #启用操作持久化

    appendfsync always #每次都写

    appendfsync everysec #每1s

    appendfsync no #随着系统


  • redis订阅与发布

    SUBSCRIBE tv1 tv2 #定阅tv1 tv2频道

    publish tv1 test #向tv1发送数据

来自: http://my.oschina.net/zhuangweihong/blog/593614