四.Redis的数据结构

写的再好不如看文档…
http://www.runoob.com/redis/redis-tutorial.html
一.Redis的五种数据类型:
1.字符串(String)(常用)
2.哈希(hash,相当于Map)(常用)
3.字符串列表(list,相当于List)
又分:
a.ArrayList数组方式
b.LinkedList指针方式
c.双向链表方式
4.字符串集合(Set)
5.有序字符串集合(sorted set,相当于ZSet)

二.key命名规范
1.不要太长,不要太短
2.在项目一般规定同一常量命名规范

三Redis常用命令:

A.String 和 数值型字符串操作:

1.set KEY VALUE(设置值)
2.get KEY(获取值,没有此KEY返回nil)
3.getset KEY VALUE(先获取此KEY之前的值,在设置成VALUE值,返回旧值)
4.del KEY1 KEY2..(根据KEY删除指定的值,返回删除的个数)
《br/》数值操作,如果是不能转为数值的字符串会报错:ERR value is not an integer or out of range
5.incr KEY(数值操作,每次+1,相当于++i,如果没有此KEY,会初始化为0在+1,返回VALUE6.decr KEY(数值操作,每次-1,相当于--i,如果没有此KEY,会初始化为0在-1,返回VALUE7.incrby KEY NUMBER(数值操作,每次+NUMBER,相当于++NUMBER,如果没有此KEY,会初始化为0在+NUMBER,返回VALUE8.decrby KEY NUMBER(数值操作,每次-NUMBER,相当于--NUMBER,如果没有此KEY,会初始化为0在-NUMBER,返回VALUE)
8.append KEY VALUE(在字符串后面追加VALUE,如果KEY不存在,新创建一个,值为VALUE,返回字符串的长度)
9.exists KEY1 KEY2 KEY3...(判断指定的多个KEY的数据是否存在,返回存在的个数)

B.Hash操作(相当于java的map,存储多个String 的key和String 的value组成数据,每个hash可以存储4294967295个键值对)

1.hset KEY FILED VALUE(设置一个名为KEY的hash,键为FILED值为VALUE,一次只能设置一对键值,如果之前存在此KEY,会追加一对。返回成功数量)
2.hget KEY FILED(获取此KEY对应的hash中的某个FILED的VALUE,返回VALUE,如果不存在此FILED,返回nil)
3.hmset KEY FILED1 VALUE1 FILED2 VALUE2...(设置一个名为KEY的hash,一次可以设置多对键值,如果之前存在此KEY,会追加多对。返回Ok。。。)
4.hmget KEY FILED1 FILED2...(获取此KEY的hash里的多个FILED的VALUE,返回多个VALUE,如果不存在此FILED,返回nil)
5.hgetall KEY(获取此KEY的hash的所有FILED和VALUE)
6.hdel KEY FILED1 FILED2...(删除此KEY的hash的指定FILED的VALUE,一次可以删除多个,返回删除的个数)
7.del KEY1 KEY2..(直接删除整个hash,返回删除的个数)
《br/》数值操作,如果是不能转为数值的字符串会报错:ERR value is 
8.hincrby KEY FILED NUMBER(数值增加NUMBER,没有初始化0在增加,返回最终结果)
9.hexists KEY FILED(是否存在此FILED,一次只能检查一个,返回存在个数)
10.hlen KEY(获得此hash有多少对键值,返回个数)
11.hkeys KEY(获得hash所有的键)
12.hvals KEY(获得hash所有的值)

C.list操作

方式
1.ArrayList数组:改变元素顺序,开头和结尾元素操作较快,中间元素操作较慢
2.LinkedList指针:操作元素只改变元素指针,较快
3.双向链表增加
4.双向链表删除

做法:
1.添加list元素

1.lpush KEY VALUE1 VALUE2 VALUE3..(依次向list的左边添加元素,如果list已存在,会依次向左追加,返回list的长度)
2.rpush KEY VALUE1 VALUE2 VALUE3..(依次向list的右边添加元素,如果list已存在,会依次向右追加,返回list的长度)
3.lpushx KEY VALUE(如果指定KEY的list元素存在,会向list左边追加VALUE,返回list的长度。如果不存在即不会新建list,返回0)
4.rpushx KEY VALUE(如果指定KEY的list元素存在,会向list右边追加VALUE,返回list的长度。如果不存在即不会新建list,返回0)
5.lset KEY INDEX VALUE(添加元素到指定索引,之前的元素会被往后挤。返回OK。如果KEY不存在,返回ERR no such key)
6.linsert KEY before VALUE1 VALUE2(向list的第一个VALUE1的前面添加VALUE2,返回list的长度。如果KEY不存在,不会创建新的list,返回0)
7.linsert KEY after VALUE1 VALUE2(向list的第一个VALUE1的后面添加VALUE2,返回list的长度。如果KEY不存在,不会创建新的list,返回0)
8.rpoplpush KEY1 KEY2(将KEY1指定的list的尾部元素剪切[ropo]到KEY2指定的list的头部[lpush]。KEY1可以等于KEY2。返回剪切的元素。如果KEY1指定的list不存在,返回nil。如果KEY2指定的list不存在,会新建list,元素为剪切的元素)(一般用于消息队列的防止消费者崩溃消息丢失的情况:生产者执行lpush,消费者执行rpoplphsh取出消息并备份,当消费者成功处理消息再将备份删除)

2.查看list列表

1.lrange KEY STARTNUM ENDNUM(从0开始计算,正数为从左到右的长度,0为第一位,负数为从有到左的长度-1为最后一位。根据开始长度和结束长度返回选择的list元素,如果没有此KEY或者list的元素被删除完,返回empty list or set)
2.llen KEY(获取list的长度,返回list的长度。如果此KEY的元素不存在,返回0)

3.删除list元素

1.lpop KEY(从list左边开始获取并删除一个元素,如果指定KEY的元素不存在,返回nil。如果list元素被删除完,会删除此KEY的list并返回nil)
2.rpop KEY(从list右边开始获取并删除一个元素,如果指定KEY的元素不存在,返回nil。如果list元素被删除完,会删除此KEY的list并返回nil)
3.lrem KEY COUNT VALUE(删除COUNT个值为VALUE的元素。如果COUNT大于0,从左往右删除COUNT个值为VALUE的元素。如果COUNT小于0,从右往左删除COUNT个值为VALUE的元素。如果COUNT等于0,删除全部值为VALUE的元素)

D.Set集合(无序的list)(一般用于唯一不重复的数据)
1.Set的元素没有顺序,不允许出现重复的元素
2.Set可包含最大元素数量:4294967295

3.Set常用命令
1.添加删除元素:

1.sadd KEY VALUE1 VALUE2 VALUE3...(向KEY指定的set添加元素,返回添加成功元素的个数。如果有相同的元素,不会添加,减去相同元素个数,返回剩余成功添加的不相同元素个数)
2.srem KEY VALUE1 VALUE2 VALUE3...(删除KEY指定set的多个元素,返回删除成功元素的个数。如果没有匹配元素,返回0)

2.查看元素

1.smembers KEY(查看指定KEY的set的所有元素,返回所有元素。如果指定KEY不存在,返回empty list or set)
2.sismember KEY VALUE(判断指定KEYset是否存在VALUE这个元素,存在返回1,不存在返回0)
3.scard KEY(返回Set的长度,不存在的KEY返回0)
4.srandmember KEY(随机返回Set中的某个元素,如果指定KEy不存在返回nil)

3.Set的差集运算(A比B和C的差集:所有A拥有,B没有并且C也没用的元素,为A比B和C的差集元素)

1.sdiff KEY1 KEY2 KEY3...(返回KEY1有,KEY2和KEY3都没有的set中的元素。如果KEY1不存在,返回empty list or set。如果KEY2或者KEY3不存在,相当于KEy1和空的Set比较。如果KEY1,KEY2,KEY3...为同一个Set或者元素都相等,返回:empty list or set)
2.sdiffstore KEY KEY1 KEY2..(将KEY1与KEY2...交集的结果存入KEY)

4.Set的交集运算(A比B和C的交集:A和B和C同时拥有的元素为A和B和C的交集元素)

1.sinter KEY1 KEY2 KEY3..(返回KEy1和KEY2和KEY3都拥有的元素。如果其中一个KEy不存在,相当于和空Set比较。如果一个相同元素都没有,返回empty list or set)
2.sinterstore KEY KEY1 KEY2..(将KEY1和KEY2..交集的结果存入KEY)

5.Set的的并集运算(A比B和C的并集:A和B和C的所有元素合并,并去掉重复元素)

1.sunion KEY1 KEY2 KEY3..(返回KEY1 KEY2 KEY3..和并后去掉重复的元素的所有元素,如果所有KEY都不存在,返回empty list or set)
2.sunionstore KEY KEY1 KEY2...(将KEY1与KEY2...并集的结果存入KEY)

E.Stored-set(ZSet)有序集合(和Sets相比,Sorted Sets是将 Set 中的元素增加了一个排序参数 sort,使得集合中的元素能够按 sort进行有序排列,每次修改sort,元素都会重新排序)
1.添加元素

1.zadd KEY SORT1 VALUE1 SORT2 VALUE2...(添加ZSet有序集合,根据SORT排序,SORT只能为数值型,否则报错:ERR value is not a valid float,返回添加成功元素的个数。SORT可以重复,VALUE不能重复。如果SORT相同,VALUE不同,新添加n条,返回成功的个数。如果SORT不同,VALUE相同,重新排序此VALUE,返回0)
2.zincrby KEY NUM VALUE(为指定VALUE的SORT增加NUM,返回最终此VALUE的SORT。如果KEY或VALUE不存在,新加一个并SORT为0+NUM。返回此VALUE的最终SORT)

2.查看元素

1.zscore KEY VALUE(返回此VALUE的SORT排序值,如果KEY或者VALUE不存在,返回nil)
2.zcard KEY(返回zset的元素个数,如果KEY不存在,返回0)
3.zrange KEY STARTNUM ENDNUM(升序返回指定开始位置到结束位置的元素,正数从左往右,0为第一个元素。负数从右往左,-1为最后一个元素。如果KEY不存在返回:empty list or set)
4.zrange KEY STARTNUM ENDNUM WITHSCORES(升序返回指定开始位置到结束位置的元素以及排序SORT,正数从左往右,0为第一个元素。负数从右往左,-1为最后一个元素。如果KEY不存在返回:empty list or set)
5.zrevrange KEY STARTNUM ENDNUM(降序返回指定开始位置到结束位置的元素,正数从左往右,0为第一个元素。负数从右往左,-1为最后一个元素。如果KEY不存在返回:empty list or set)
6.zrevrange KEY STARTNUM ENDNUM WITHSCORES(降序返回指定开始位置到结束位置的元素以及排序SORT,正数从左往右,0为第一个元素。负数从右往左,-1为最后一个元素。如果KEY不存在返回:empty list or set)
7.zrangebyscore KEY STARTSORT ENDSORT(升序返回大于等于STARTSORT和小于等于ENDSORT之间的元素。如果KEY不存在返回:empty list or set)
8.zrangebyscore KEY STARTSORT ENDSORT limit STARTNUM ENDMUN(升序返回大于等于STARTSORT和小于等于ENDSORT之间的元素,并只返回STARTNUM位置到ENDMUN位置的元素,可以为负数。如果KEY不存在返回:empty list or set)
9.zcount KEY STARTSORT ENDSORT(获取SORT在STARTSORT到ENDSORT之间的元素个数。如果指定KEY不存在返回0)

3.删除元素

1.zremrangebyrank KEY STARTNUM ENDNUM(删除指定开始位置和结束位置的元素,可以为负数。返回删除成功个数。如果KEY不存在,返回0)
2.zremrangebyscore KEY STARTSORT ENDSORT(删除大于等于STARTSORT和小于等于ENDSORT之间的元素[ENDSORT<=VALUE>=STARTSORT],返回删除成功的个数。如果KEY不存在,返回0)

四.keys的通用操作
1.查看

1.keys *(返回redis中所有的key,如果没有返回empty list or set)
2.keys STR?(返回STR指定字符+[?:匹配单个所有字符],如果没有返回empty list or set)
3.keys STR*(返回STR指定字符+[*:匹配n个所有字符],如果没有返回empty list or set)
4.exists KEY1 KEY2 KEY3...(判断这些KEY是否存在,返回存在个数)
5.ttl KEY(返回指定KEY元素的剩余时间,永久返回-1KEY不存在返回-2)
6.type KEY(返回指定KEY元素的类型:string hash list set zset)

2.编辑和删除

1.rename OLDKEY NEWKEY(将OLDKEY重命名为NEWKEY,返回ok,如果指定KEY不存在,返回(error) ERR no such key)
2.expire KEY SECOND(为指定KEY的元素设置超时事件,单位为秒。成功返回1,超时自动删除此KEY。如果KEY不存在返回0)
2.del KEY1 KEY2..(删除多个KEY,返回删除成功个数。)
3.flushall(清空此库所有数据)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值