redis的数据类型
1.Strings类型及操作
一个key对应一个value
strings类型是二进制安全
redis的strings可以保护任何数据,比如jpg图片
或者序列号对象。
set方法;
设置key对应的值为string类型的value
set name lijie
OK #代表成功
get方法:
get name
setnx方法:
如果key已经存在返回0并且不设置,如果不存(nx)在则插入。
setex方法:
设置key对应的值为string类型的value,
并制定有效期。
setex haircolor 10 red
10 : 10秒
red : haircolor的值
sexrange方法:
替换某个位置开始的字符串
get name
"lijie@126.com"
setrange name 6 gmail.com
get name
"lijie@gmail.com"
mset方法:一次设置多个key的值
成功ok,失败返回0;
mset key1 lijie key2 lins
msetnx方法:一次性设置多个key值
成功返回ok,失败返回0;
getset方法:
设置key的值,并返回key的旧值
getrang:获取字符串
getrang name 0 5
mget方法:批量获取
mget key1 key2 key3
inrc方法:递增
incrby方法:指定的数进行增加
incrby key6 5
自增5次,减的话为-5
类似自减:
decr
decrby
append方法:给指定字符串追加value
append name .net
strlen方法:查看字符串长度
strlen name
2.hashes类型
是一个string类型的field和value的映射表。
它的添加、删除操作都是O(1)(平均)。
hash特别适合于存储对象。相较于对象的每个字段
存成单个string类型。
将一个对象存在hash类型中占用的内存更少,并且更方便存取整个对象。
hset:
设置hash field为指定值,如果key不存在,
则先创建。
hset myhash field1 Hello
myhash:哈希表的名称
field:key
Hello: 值
hget:
hget myhash field1
hsetnx:
设置hash field为指定值,如果key不存在,
则先创建,如果存在返回0;
hsetnx user:001 name lamp
hmset:
设置hash多个field的值
hmset user:003 name lijie age 20 sex 1
hget:
获取哈希表某个自动
hmget:
获取所有的key
hincrby:
对某个key自增
hincrby user:003 age 5
hexists:
判断hash表中某个字段是否存在
hlen:
返回哈希表中的key的数量
hdel:
删除某个key对应的值
hdel user:002 age
hkeys:
返回哈希表中所有的key
hvals:
返回所有键对应的值
hgetall:
同时返回key以及key的值
3.list类型
list是一个链表结构,主要功能是push,pop
获取一个范围的所有值等待,操作中key可以
理解为链表的名字。Redis的list类型其实就是一个
每个子元素都是string类型的双向链表。我们
可以通过push,pop操作从链表的头部或者尾部
添加删除元素,这样list既可以作为栈,又可以
作为队列。
lpush:
往list的头部中添加元素
栈:
lpush mylist "world" //返回list里的元素个数
lpush mylist "hello"
lrange mylist 0-1 //从头部第一个元素到尾部第一个元素取出
rpush:
队列:
从list尾部添加元素
rpush mylist "world" //返回list里的元素个数
rpush mylist "hello"
lrange mylist 0-1 //从头部第一个元素到尾部第一个元素取出
linsert:
在key对应list的特定位置前或者后添加字符串
linsert mylist3 before "world" "hello"
lset:将指定下标的元素替换掉
lpush mylist "hello"
lset mylist 0 "world"
lrem:
从key对应的list中删除n个和value相同的元素
。(n<0从尾部,n=0全部删除)
返回值为删除的个数
rpush mylist "hello"
rpush mylist "hello"
lrem mylist 1 "hello" //从mylist中删除一个hello值
ltrim:
保留指定key的值范围内的数据
rpush mylist "one"
rpush mylist "two"
ltrim mylist 1 -1
输出的结果为:1
说明只剩:two
lpop:
从list的头部删除元素,并返回删除元素
l:代表从头弹出元素
r:代表从尾弹出元素
rpop:从尾部弹出
rpoplpush:
从第一个list的尾部移除元素并添加到第二个list的
头部
rpoplpush mylist1 mylist2
lindex:
返回名称为key的list中index位置的元素
llen:
返回list中元素的个数
4.sets类型
set是集合,它是string类型的无序集合。
set是通过hash table实现的。
添加,删除和查找的复制度都是O(1).
对集合我们可以取并集,交集和差集。
通过这些操作我们可以实现sns中的好友推荐和blog的tag功能;
sadd:
向集合中加元素
sadd myset hello
如果返回1表示成功,返回0表示失败
smembers:
返回set中的元素
smenbers myset
srem:
删除名称为keyd set中的元素
删除成功返回1,失败返回0
srem myset "one"
spop:
随机返回并删除名称为key的set中一个元素
成功返回1,失败返回0
spop myset
sdiff:
返回所有给定key与第一个key的差集
sdiff myset2 myset3
以myset2为标准,返回跟myset3不一样的
sdiffstore:
将返回的差集存在另一个set
sdiff myset myset1 myset2
sinter:
返回所给定key的交集
sinter myset1 myset2
sinterstore
:返回的交集存到另个set
sunion:
返回所有给定key的并集
sunionstore:
将返回的并集存到另个set中
smove
从第一个set中移除menber并添加到第二个对应
的set中
smove myset2 myset3 three
将myset2中的three元素移动到myset3中
scard:
返回set中元素的个数
scard myset
sismember
测试某个元素是集合set中的元素
是返回1,不是返回0
srandmenber:
随机返回set中的一个元素,但不删除元素
srandmenber myset
5.zset类型
sorted set是set的升级版,增加了一个
顺序属性,在添加和修改元素的时候可以指定
,每次指定后自动排序。
zadd:
向集合中添加元素:顺序,值
zadd myset 1 "one"
zadd myset 2 "two"
zadd myset 3 "two"
zrange myzset 0 -1 withscores
从第一个元素到最后一个元素取出,并附上顺号
zrem:
删除zset中的元素member
zrem myzset two
zincrby:
对顺序增加
zincrby sset1 2 one
one的顺序号变成3
zrank:
按照下标从小到大排序
zrevrank:
按照下标从大到小排序
zrevrange:
按照下标从大到小排序的结果
zrangbyscroe:
返回某范围的元素
zrangbyscroe myzset 2 3 withscores
zcount:
返回zset元素的个数
zcount myset 2 4
zcard:
返回set中元素的个数
zremrangebyrank
删除给定排名范围的数
zremrangebyrank myset 1 1
zremrangebyscore
删除给定索引范围的数
zremrangebyscore myset 1 1
1.Strings类型及操作
一个key对应一个value
strings类型是二进制安全
redis的strings可以保护任何数据,比如jpg图片
或者序列号对象。
set方法;
设置key对应的值为string类型的value
set name lijie
OK #代表成功
get方法:
get name
setnx方法:
如果key已经存在返回0并且不设置,如果不存(nx)在则插入。
setex方法:
设置key对应的值为string类型的value,
并制定有效期。
setex haircolor 10 red
10 : 10秒
red : haircolor的值
sexrange方法:
替换某个位置开始的字符串
get name
"lijie@126.com"
setrange name 6 gmail.com
get name
"lijie@gmail.com"
mset方法:一次设置多个key的值
成功ok,失败返回0;
mset key1 lijie key2 lins
msetnx方法:一次性设置多个key值
成功返回ok,失败返回0;
getset方法:
设置key的值,并返回key的旧值
getrang:获取字符串
getrang name 0 5
mget方法:批量获取
mget key1 key2 key3
inrc方法:递增
incrby方法:指定的数进行增加
incrby key6 5
自增5次,减的话为-5
类似自减:
decr
decrby
append方法:给指定字符串追加value
append name .net
strlen方法:查看字符串长度
strlen name
2.hashes类型
是一个string类型的field和value的映射表。
它的添加、删除操作都是O(1)(平均)。
hash特别适合于存储对象。相较于对象的每个字段
存成单个string类型。
将一个对象存在hash类型中占用的内存更少,并且更方便存取整个对象。
hset:
设置hash field为指定值,如果key不存在,
则先创建。
hset myhash field1 Hello
myhash:哈希表的名称
field:key
Hello: 值
hget:
hget myhash field1
hsetnx:
设置hash field为指定值,如果key不存在,
则先创建,如果存在返回0;
hsetnx user:001 name lamp
hmset:
设置hash多个field的值
hmset user:003 name lijie age 20 sex 1
hget:
获取哈希表某个自动
hmget:
获取所有的key
hincrby:
对某个key自增
hincrby user:003 age 5
hexists:
判断hash表中某个字段是否存在
hlen:
返回哈希表中的key的数量
hdel:
删除某个key对应的值
hdel user:002 age
hkeys:
返回哈希表中所有的key
hvals:
返回所有键对应的值
hgetall:
同时返回key以及key的值
3.list类型
list是一个链表结构,主要功能是push,pop
获取一个范围的所有值等待,操作中key可以
理解为链表的名字。Redis的list类型其实就是一个
每个子元素都是string类型的双向链表。我们
可以通过push,pop操作从链表的头部或者尾部
添加删除元素,这样list既可以作为栈,又可以
作为队列。
lpush:
往list的头部中添加元素
栈:
lpush mylist "world" //返回list里的元素个数
lpush mylist "hello"
lrange mylist 0-1 //从头部第一个元素到尾部第一个元素取出
rpush:
队列:
从list尾部添加元素
rpush mylist "world" //返回list里的元素个数
rpush mylist "hello"
lrange mylist 0-1 //从头部第一个元素到尾部第一个元素取出
linsert:
在key对应list的特定位置前或者后添加字符串
linsert mylist3 before "world" "hello"
lset:将指定下标的元素替换掉
lpush mylist "hello"
lset mylist 0 "world"
lrem:
从key对应的list中删除n个和value相同的元素
。(n<0从尾部,n=0全部删除)
返回值为删除的个数
rpush mylist "hello"
rpush mylist "hello"
lrem mylist 1 "hello" //从mylist中删除一个hello值
ltrim:
保留指定key的值范围内的数据
rpush mylist "one"
rpush mylist "two"
ltrim mylist 1 -1
输出的结果为:1
说明只剩:two
lpop:
从list的头部删除元素,并返回删除元素
l:代表从头弹出元素
r:代表从尾弹出元素
rpop:从尾部弹出
rpoplpush:
从第一个list的尾部移除元素并添加到第二个list的
头部
rpoplpush mylist1 mylist2
lindex:
返回名称为key的list中index位置的元素
llen:
返回list中元素的个数
4.sets类型
set是集合,它是string类型的无序集合。
set是通过hash table实现的。
添加,删除和查找的复制度都是O(1).
对集合我们可以取并集,交集和差集。
通过这些操作我们可以实现sns中的好友推荐和blog的tag功能;
sadd:
向集合中加元素
sadd myset hello
如果返回1表示成功,返回0表示失败
smembers:
返回set中的元素
smenbers myset
srem:
删除名称为keyd set中的元素
删除成功返回1,失败返回0
srem myset "one"
spop:
随机返回并删除名称为key的set中一个元素
成功返回1,失败返回0
spop myset
sdiff:
返回所有给定key与第一个key的差集
sdiff myset2 myset3
以myset2为标准,返回跟myset3不一样的
sdiffstore:
将返回的差集存在另一个set
sdiff myset myset1 myset2
sinter:
返回所给定key的交集
sinter myset1 myset2
sinterstore
:返回的交集存到另个set
sunion:
返回所有给定key的并集
sunionstore:
将返回的并集存到另个set中
smove
从第一个set中移除menber并添加到第二个对应
的set中
smove myset2 myset3 three
将myset2中的three元素移动到myset3中
scard:
返回set中元素的个数
scard myset
sismember
测试某个元素是集合set中的元素
是返回1,不是返回0
srandmenber:
随机返回set中的一个元素,但不删除元素
srandmenber myset
5.zset类型
sorted set是set的升级版,增加了一个
顺序属性,在添加和修改元素的时候可以指定
,每次指定后自动排序。
zadd:
向集合中添加元素:顺序,值
zadd myset 1 "one"
zadd myset 2 "two"
zadd myset 3 "two"
zrange myzset 0 -1 withscores
从第一个元素到最后一个元素取出,并附上顺号
zrem:
删除zset中的元素member
zrem myzset two
zincrby:
对顺序增加
zincrby sset1 2 one
one的顺序号变成3
zrank:
按照下标从小到大排序
zrevrank:
按照下标从大到小排序
zrevrange:
按照下标从大到小排序的结果
zrangbyscroe:
返回某范围的元素
zrangbyscroe myzset 2 3 withscores
zcount:
返回zset元素的个数
zcount myset 2 4
zcard:
返回set中元素的个数
zremrangebyrank
删除给定排名范围的数
zremrangebyrank myset 1 1
zremrangebyscore
删除给定索引范围的数
zremrangebyscore myset 1 1