Redis:数据类型

来源:互联网 发布:手机电话录音软件 编辑:程序博客网 时间:2024/04/30 20:41
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
0 0
原创粉丝点击