您的位置:首页 > 数据库 > Redis

redis基本数据类型

2015-11-24 09:06 483 查看
以后会每天更新 更新内容大多是分布式博客。

感觉不错的加我java群  群号是:369784068

redis  (key/value) 分布式内存数据库

 1.支持了更丰富的数据类型(string/list/set/hashes/sorted-set)

 2.支持持久化机制

 3.支持master/slaver    slaver升级

 redis安装(windows/linux)

 1.linux下的

     解压   tar -xzvf 文件名.tar.gz

     进入目录   make

    

     修改redis.conf文件    daemonize no 改成yes

     开启服务

         进入src目录   ./redis-server /etc/redis.conf

     连接服务

         ./redis-cli

2.windows下安装 (下windows版本的)

   直接解压即可

   解压目录后,下面可能没有redis.conf文件,请去官网下载该文件 or 把Linux版的redis.conf文件直接拷贝过来

   redis-server redis.conf  --->启动

   redis-cli

3.redis有更丰富的数据类型

   value可以是string/list/hashes/set/sorted-set 

   每种类型使用的基本命令和使用的场景

 3.1string类型

        字符串类型是redis最为基础的类型,在redis中是二进制安全的

    (可以是任意数据格式,如JPEG图像数据或json格式数据等)
redis中字符串value最多可以是512M

string类型的基本命令
 a.set/get/append/strlen
    append mykey "hello"
    append mykey "world"
    get mykey
    set mykey "this is a test"
    get mykey
    strlen mykey
 b.incr/desr/incrby/descrby
    set mykey 20
    incr mykey
    decr mykey
    del mykey
    decr mykey  对空值执行递减操作,其原值被设定为0,递减后的值是-1
    del mykey
    incr mykey 对空值执行递加操作,其原值被设定为0,递加后的值是1
    一定要是数字才能进行加减
    set mykey 10
    descby mykey 5
    incrby mykey 20
  c.getset命令(注意原子性)
     incr mycounter //将计数器的值原子性增1
     getset mycounter 0  //获取计数器的同时,并将其设置为新值,这两个操作是原子操作
     get mycounter
  d.setex
     setex mykey 10 "hello"   //过期时间是10秒
     ttl mykey查看
     expire mykey 时间
  e.setnx
     setnx mykey "hello"
     setnx mykey "world"  //该键已经存在 ,无效
  f.setrange/getrange
     set mykey "helloworld"
     setrange mykey 6 dd //从第六个字节开始替换2个字节(dd只有两个字节)
     get mykey
     setrange mykey 20 dd //已经超过了key的原有值的长度,该命令将会在末尾补0
     get mykey
     del mykey
     setrange mykey 2 dd
     get mykey
     set mykey "0123456789"
     getrange mykey 1 2
     getrange mykey 1 20
   g.mset/mget/msetnx
     mset key1 "hello" key2 "world"
     mget key1 key2
     msetnx key3 "aa" key4 "bb"
     mget key3 key4
     msetnx key4 "cc" key5 "dd" // key4已经存在,所以不能成功

List数据类型

   按照插入顺序排序的字符串链表,可以在其头部(left)和尾部(right)添加新元素

   在插入数据时,如果键不存在,创建新的链表

   链表中所有元素被移除,该键也就不存在了。

   链表的操作无论是头和尾效率都是极高的,哪怕链表中有百万个元素

   如果是链表中间的元素进行操作,效率极其低

   a.lpush/lpushx/lrange

     lpush mykey a b c d

     lrange mykey 0 -1

     lrange mykey 0 2

     lpushx mykey e

   b.lpop/llen

   c.lrem/lset/lindex/ltrim

   lpush mykey a b c d a c

   lrem mykey 2 a  从left往right删除2个值等于a的元素,返回的值为实际删除的数量

   c.linsert

      lpush mykey a b c d e

      linsert mykey before a a1

      linsert mykey after e e2

   d.rpush/rpushx/rpop/rpoplpush

     rpoplpush 弹出一个之后,放入另外一个链表当中

 Hashes数据类型

   redis的Hashes类型看成是具有String作为key,value又是一个string value这样的map

   非常适合存储值对象的信息

   a.hset/hget/hdel/hexists/hlen/hsetnx

   b.hincrby

   c.hgetall/hkeys/hvals/hmget/hmset

Set数据类型

    key,value是Set结构,不能存放重复对象

    1.sadd/smembers/scard/sismember

    2.spop/srem/srandmember/smove

    3.特殊的操作,可以做多个set间的聚合操作,完全在服务器端完成,效率较高

       sdiff/sdiffstore/sinter/sinterstore/sunion/sunionstore

     场景 

        1)可以使用Redis的Set数据类型来跟踪唯一性数据
  比如访问某一博客的唯一的IP地址信息
2)利用聚合的功能
   比如 所有购买某一电子设备的客户id被存储在一个指定的Set中
   购买另外一种电子设备的客户id被存储在另外一个指定Set中
   如果要查看买了这两种商品的用户的id,只要用sinter的操作即可

Sorted-Set数据类型

    在set基础上,加一个积分,并根据积分排序

 1.zadd/zcard/zcount/zrem/zincrby/zscore/zrange/zrank

 2.zrangebyscore/zremrangebyrank/zremrangebyscore

 3.zrevrange/zrevrangebyscore/zrevrank

 用于大型在线游戏的积分排行榜

 也可以用于构建索引数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: