安装

  • wget http://download.redis.io/releases/redis-3.0.0.tar.gz 下载
  • tar -vxzf redis-3.0.0.tar.gz 解压
  • cd redis-3.0.0
  • make 编译
  • make PREFIX=/usr/local/redis/ install 安装
  • cp redis.conf /usr/local/redis 复制文件
  • *cd bin
  • ./redis-server 前端启动
  • vim redis.conf 后端启动 wq保存
  • daemonize no改为daemonize yes
  • ./bin/redis-server ./redis.conf 启动
  • ps -ef | grep -i redis 6379端口
  • ./bin/redis-cli shutdown 停止
  • ./bin/redis-cli 客户端
  • ping 连接测试 pong
  • set name imooc 保存 name(key)
  • get name 获得
  • keys * 获得全部
  • del name 删除

    key的长度,和规范,单线程

    redis 的五种数据类型

  • 字符串String

  • 哈希hash
  • 字符串列表list
  • 字符串集合set,不可重复,4294个
  • 有序字符串集合sorted set

    String

  • incr num 将num的值加一如果不存在,先初始化后加一

  • decr num 递减
  • incrby num 5 加5
  • decrby num 6 减3
  • append num 5 追加字符串

    hash

  • hset myhash username jack hash键值对的形式加数据

  • hmset myhash username root age 21 多个数据录入
  • hget myhash username获得
  • hmget myhash username age获得多个
  • hgetall myhash 获得所有
  • hdel myhash2 username age删除
  • del myhash2删除集合
  • hincrby myhash age 5加五
  • hexists myhash username 判断存在否返回 0,1
  • hlen myhash 长度
  • hkeys myhash 所有key
  • hvals myhash 所有value

    list

  • arraylist linkedlist

  • lpush mylist a b c 左端添加
  • rpush mylist 1 2 3 右端添加
  • lrange mylist 0 5 分段查看 0 -2也可以
  • lpop mylist 弹出左边
  • rpop mylist 淡出右边
  • lpushx mylist x 向mylist添加,如果mylist不存在不添加
  • lrem mylist 2 3 删除两个3, -2 3 从尾部删除2个三,0 2 删除所有的2
  • lset mylist 0 2指定位置添加
  • linsert mylist defore b 11指定元素位置前添加
  • linsert mylist after b 11指定元素位置后添加
  • rpoplpush mylist mylist2将mylist的元素弹出一个加到mylist2(消息队列)

    set(记录ip ,记录某个商品的购买记录,)

  • sadd myset a b c添加

  • srem myset a b 删除
  • smembers myset 查看
  • sismember myset a 查看是否存在
  • adiff myset1 myset2 查看差集
  • sinter myset1 myset2 查看交集
  • sunion myset1 myset2 查看并集
  • scard myset 查看长度
  • srandmenber myset 随机返回一个数
  • sdiffstore myset1 myset2 myset1 将1和2相差的值加到1
  • sinterstore myset1 myset2 myset1 将1和2交集的值加到1
  • sunionstore myset1 myset2 myset1 将1和2并集的值加到1

    sorted-set有序,分数排序 游戏积分排名,微博热点,索引数据

  • zadd mysort 70 zz 80 ls 90 ww 添加

  • zscore mysort zs 获得分数
  • zcard mysore 获得数量
  • zrem mysort tom ww 删除
  • zrange mysort 0 -1 withsores 查看数据,withsores带不带分数
  • zrevange mysore 0 -1 withsores 降序
  • zremrangebyrank mysort 0 4按照范围删除
  • zremrangebyscore mysort 80 100按照分数范围删除
  • zrangebyscore mysore 0 100 withsores limit 0 2查看指定范围的数据切带分数和limit
  • zincrby mysort 3 ls给指定对象分数加3
  • zcount mysort 80 90 分数段的数量

    通用操作

  • key * 获得所有

  • key my?查看my匹配的key
  • del my1 删除
  • exists my1 判断是否存在
  • get company 获取
  • rename company newcompany 重命名
  • expire newpany 1000 过期时间1000秒
  • ttl newcompany查看过期时间
  • type mylist查看类型

    特性

  • 多数据库,最多16个数据库

  • select 1(0到15)连接1号数据库
  • move myset 1移动myset到1号数据库

    事务

  • multi exec discard

  • multi开启
  • exec提交
  • discard回滚
  • 持久化
  • RDB:指定时间间隔,将内存数据写入硬盘
  • AOF:日志记录所有的操作
  • 无持久化:缓存

    高级用法

  • 一致性hash算法,解决服务器数量变化的问题

  • 关键词,环状结构,顺时针,虚拟节点
  • 单线程-多路复用IO模型