redis基本数据类型

以后会每天更新 更新内容大多是分布式博客。

感觉不错的加我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
 用于大型在线游戏的积分排行榜
 也可以用于构建索引数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值