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
用于大型在线游戏的积分排行榜
也可以用于构建索引数据
感觉不错的加我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
用于大型在线游戏的积分排行榜
也可以用于构建索引数据
相关文章推荐
- ubuntu 部署 redis 主从节点配置
- ubuntu 安装 redis集群
- Redis作者谈Redis应用场景
- Redis入门
- Redis持久化
- REDIS源码中一些值得学习的技术细节01
- Redis内存回收:LRU算法
- linux下redis下载安装
- redis 持久化与备份策略
- 用redis做超时判断 感觉写的很有意思
- Redis 起步
- Redis介绍
- Redis集群方案(codis)
- Redis简介
- Redis学习笔记3-本机java程序调用虚拟机redis
- redis cluster 集群 安装 配置 详解
- 本地电脑安装和配置Redis操作客户端
- 用Redis bitmap统计活跃用户、留存
- 15天玩转redis —— 第七篇 同事的一次缓存操作引起对慢查询的认识
- redis的主从复制配置