Redis笔记整理2 --Redis数据类型
2016-11-25 11:05
411 查看
Redis共5个数据类型:string、hash、list、set、sorted set
string:
string类型是一个最简单的类型。一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片(不推荐)或者序列化对象。
set:设置key对应的值为string类型的value,再次set会覆盖上一次的value值
setnx:设置key对应的值为string类型的value,如果key已经存在,返回0,如果key不存在返回1,nx是not exist的意思。
setex:设置key对应的值为string类型的value,并指定此键值对应的有效期
setrange:设置指定key的value值的子字符串
mset:一次设置多个key值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置
msetnx:一次设置多个key值,成功返回ok表示所有的值都被设置了,失败返回0表示没有任何值被设置,但不会覆盖已经存在的key。批量设置时如果有其中一个key已经存在,则设置失败返回0
get:获取key对应的string值,如果key不存在返回nil
getset:设置key值,并返回key的旧值
getrange:获取key的value值的子字符串
mget:一次获取多个key值,如果对应key不存在则返回nil
incr:对key的值做加加操作,并返回新的值,key不存在的时候设置key,并认为原来的value是0
incrby:同incr类型,加指定值,key不存在的时候设置key,并认为原来的value是0
append:给指定key的字符串追加value,返回新字符串值的长度
setlen:取指定key的value值的长度
hash:
hash是一个string类型的field(字段)和value的映射表,它的添加删除都是平均操作。hash特别适用于存储对象,相较于将对象的没个字段存成单个string类型,将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
hset:设置hash field为指定值,如果key不存在则先创建。
hmset:同时设置hash的多个field
hmget:获取全部指定的hash field
hincry:对某一个键进行自增
hlen:指定hash的field数量
hdel:删除指定hash的field
hkeys:返回hash表中所有field
hvals:返回hash的所有value
hgetall:获取某个hash中全部field及value
list:
list是一个链表结构,主要功能是push、pop、获取一个范围内所有值等,操作中key理解为链表的名字。redis的list类型其实就是一个每个子元素都是string类型的双向链表,我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈又可以作为队列。
lpush:在key对应list的头部添加字符串元素,先进后出(栈)
rpush:从list的尾部添加字符串元素,先进先出(队列)
linsert:在key对应list的特定位置前或后添加字符串
lset:替换指定下标的元素
lrem:从key对应list中删除n个和value相同的元素。(n<0从尾删除,n=0全部删除)
ltrim:保留指定key的值范围内的数据(除保留的元素全部删除)
rpop:从list尾部删除删除元素,并返回删除元素
rpoplpush:从第一个list的尾部移除元素并添加到第二个list的头部
lindex:返回名称为key的list中index位置的元素
llen:返回key对应list的长度
set:
set是集合(无序不重复),它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是0(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
sadd:向名称为key的set中添加元素
srem:删除名称为key的set中的元素
sinterstore:返回所有给定key的交集,并将结果存为另一个key
sunion:返回所有给定集合的并集
sunionstore:返回所有给定集合的并集,并将结果存为另一个key
smove:从第一个key对应的set中移除member并添加到第二个对应的set中。
sismember:测试member是否是名称为key的set的元素
srandmember:随机返回名称为key的set的一个元素,但不删除元素
sorted set:
sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列mysql表(等于加了个顺序的field),一列存value,一列存顺序。操作key理解为zset的名字。
zadd:向名称为key的zset中添加元素member,score进行排序。如果该元素存在,则重新排序。
zincrby:如果在名称为key的zset中已经存在元素member,则该元素的score增加increment,否则向该集合中添加该元素,其score值为increment(顺序号增减)
zrevrange:返回名称为key的zset(按score从大到小顺序)中的index从start到end所有元素
zrangebyscore:返回名称为key的zset(按score从小到大顺序)中的指定元素
zcount:返回集合中score在给定区间的数量
zcard:返回集合中元素的个数
zremrangebyrank:删除集合中下标在给定区间的元素
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "one"
2) "2"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "five"
10) "5"
127.0.0.1:6379> zremrangebyrank zset1 3 3
(integer) 1
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "one"
2) "2"
3) "two"
4) "2"
5) "three"
6) "3"
7) "five"
8) "5"zremrangebyscore:删除集合中下标为给定score区间内的元素
string:
string类型是一个最简单的类型。一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片(不推荐)或者序列化对象。
set:设置key对应的值为string类型的value,再次set会覆盖上一次的value值
setnx:设置key对应的值为string类型的value,如果key已经存在,返回0,如果key不存在返回1,nx是not exist的意思。
setex:设置key对应的值为string类型的value,并指定此键值对应的有效期
setrange:设置指定key的value值的子字符串
mset:一次设置多个key值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置
msetnx:一次设置多个key值,成功返回ok表示所有的值都被设置了,失败返回0表示没有任何值被设置,但不会覆盖已经存在的key。批量设置时如果有其中一个key已经存在,则设置失败返回0
get:获取key对应的string值,如果key不存在返回nil
getset:设置key值,并返回key的旧值
getrange:获取key的value值的子字符串
mget:一次获取多个key值,如果对应key不存在则返回nil
incr:对key的值做加加操作,并返回新的值,key不存在的时候设置key,并认为原来的value是0
incrby:同incr类型,加指定值,key不存在的时候设置key,并认为原来的value是0
append:给指定key的字符串追加value,返回新字符串值的长度
setlen:取指定key的value值的长度
hash:
hash是一个string类型的field(字段)和value的映射表,它的添加删除都是平均操作。hash特别适用于存储对象,相较于将对象的没个字段存成单个string类型,将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
hset:设置hash field为指定值,如果key不存在则先创建。
127.0.0.1:6379> hset user:001 name lijie (integer) 1 127.0.0.1:6379> hget user:001 name "lijie"hsetnx:设置hash field为指定值,如果key不存在,则先创建,如果存在返回0
hmset:同时设置hash的多个field
127.0.0.1:6379> hmset user:003 name lijie age 20 OK
hmget:获取全部指定的hash field
127.0.0.1:6379> hmget user:003 name age 1) "lijie" 2) "20"
hincry:对某一个键进行自增
127.0.0.1:6379> hincrby user:003 age 5 (integer) 25hexists:测试field是否存在,存在则返回1,不存在返回0
hlen:指定hash的field数量
hdel:删除指定hash的field
hkeys:返回hash表中所有field
hvals:返回hash的所有value
hgetall:获取某个hash中全部field及value
list:
list是一个链表结构,主要功能是push、pop、获取一个范围内所有值等,操作中key理解为链表的名字。redis的list类型其实就是一个每个子元素都是string类型的双向链表,我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈又可以作为队列。
lpush:在key对应list的头部添加字符串元素,先进后出(栈)
127.0.0.1:6379> lpush list1 hello (integer) 1 127.0.0.1:6379> lpush list1 world (integer) 2 127.0.0.1:6379> lrange list1 0 -1 1) "world" 2) "hello"
rpush:从list的尾部添加字符串元素,先进先出(队列)
linsert:在key对应list的特定位置前或后添加字符串
127.0.0.1:6379> rpush list2 one (integer) 1 127.0.0.1:6379> rpush list2 two (integer) 2 127.0.0.1:6379> lrange list2 0 -1 1) "one" 2) "two" 127.0.0.1:6379> linsert list2 before two three (integer) 3 127.0.0.1:6379> lrange list2 0 -1 1) "one" 2) "three" 3) "two
lset:替换指定下标的元素
lrem:从key对应list中删除n个和value相同的元素。(n<0从尾删除,n=0全部删除)
127.0.0.1:6379> lrange list2 0 -1 1) "one" 2) "three" 3) "two" 4) "one" 5) "one" 6) "one" 127.0.0.1:6379> lrem list2 3 one (integer) 3 127.0.0.1:6379> lrange list2 0 -1 1) "three" 2) "two" 3) "one"
ltrim:保留指定key的值范围内的数据(除保留的元素全部删除)
127.0.0.1:6379> lrange list4 0 -1 1) "one" 2) "two" 3) "three" 4) "four" 127.0.0.1:6379> ltrim list4 1 2 OK 127.0.0.1:6379> lrange list4 0 -1 1) "two" 2) "three"lpop:从list头部删除删除元素,并返回删除元素
rpop:从list尾部删除删除元素,并返回删除元素
rpoplpush:从第一个list的尾部移除元素并添加到第二个list的头部
lindex:返回名称为key的list中index位置的元素
llen:返回key对应list的长度
set:
set是集合(无序不重复),它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是0(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
sadd:向名称为key的set中添加元素
127.0.0.1:6379> sadd set1 one (integer) 1 127.0.0.1:6379> sadd set1 two (integer) 1 127.0.0.1:6379> sadd set1 two (integer) 0smembers:查看元素
srem:删除名称为key的set中的元素
127.0.0.1:6379> smembers set1 1) "two" 2) "one" 127.0.0.1:6379> srem set1 one (integer) 1 127.0.0.1:6379> smembers set1 1) "two"spop:随机返回并删除名称为key的set中一个元素
127.0.0.1:6379> smembers set1 1) "one" 2) "two" 3) "four" 4) "three" 5) "five" 127.0.0.1:6379> spop set1 "three" 127.0.0.1:6379> spop set1 "two" 127.0.0.1:6379> spop set1 "four"sdiff:返回所有给定key与第一个key的差集
127.0.0.1:6379> smembers set1 1) "one" 2) "five" 127.0.0.1:6379> smembers set2 1) "two" 2) "one" 3) "three" 127.0.0.1:6379> sdiff set1 set2 1) "five" 127.0.0.1:6379> sdiff set2 set1 1) "two" 2) "three"sdiffstore:返回所有给定key与第一个key的差集,并将结果存为另一个key
127.0.0.1:6379> sdiffstore set1 set2 set3sinter:返回所有给定key的交集
sinterstore:返回所有给定key的交集,并将结果存为另一个key
sunion:返回所有给定集合的并集
sunionstore:返回所有给定集合的并集,并将结果存为另一个key
smove:从第一个key对应的set中移除member并添加到第二个对应的set中。
127.0.0.1:6379> smove set2 set3 three (integer) 1 127.0.0.1:6379> smembers set3 1) "three"scard:返回名称为key的set的元素个数
sismember:测试member是否是名称为key的set的元素
srandmember:随机返回名称为key的set的一个元素,但不删除元素
sorted set:
sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列mysql表(等于加了个顺序的field),一列存value,一列存顺序。操作key理解为zset的名字。
zadd:向名称为key的zset中添加元素member,score进行排序。如果该元素存在,则重新排序。
127.0.0.1:6379> zadd zset1 1 one (integer) 1 127.0.0.1:6379> zadd zset1 2 two (integer) 1 127.0.0.1:6379> zadd zset1 3 two (integer) 0 127.0.0.1:6379> zrange zset1 0 -1 withscores 1) "one" 2) "1" 3) "two" 4) "3" 127.0.0.1:6379> zrange zset1 0 -1 1) "one" 2) "two"zrem:删除名称为key的zset中的元素member
zincrby:如果在名称为key的zset中已经存在元素member,则该元素的score增加increment,否则向该集合中添加该元素,其score值为increment(顺序号增减)
127.0.0.1:6379> zrange zset1 0 -1 withscores 1) "one" 2) "1" 3) "two" 4) "3" 127.0.0.1:6379> zincrby zset1 1 one "2" 127.0.0.1:6379> zrange zset1 0 -1 withscores 1) "one" 2) "2" 3) "two" 4) "3"zrank:返回名称为key的zset中member元素的排名(按score从小到大排序)即下标
127.0.0.1:6379> zrank zset1 two (integer) 1zrevrank:返回名称为key的zset中member元素排名(按score从大到小排序)即下标
zrevrange:返回名称为key的zset(按score从大到小顺序)中的index从start到end所有元素
zrangebyscore:返回名称为key的zset(按score从小到大顺序)中的指定元素
127.0.0.1:6379> zrange zset1 0 -1 withscores 1) "one" 2) "2" 3) "two" 4) "2" 5) "three" 6) "3" 7) "four" 8) "4" 9) "five" 10) "5" 127.0.0.1:6379> zrangebyscores zset1 2 3 withscores (error) ERR unknown command 'zrangebyscores' 127.0.0.1:6379> zrangebyscore zset1 2 3 withscores 1) "one" 2) "2" 3) "two" 4) "2" 5) "three" 6) "3"
zcount:返回集合中score在给定区间的数量
zcard:返回集合中元素的个数
zremrangebyrank:删除集合中下标在给定区间的元素
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "one"
2) "2"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "five"
10) "5"
127.0.0.1:6379> zremrangebyrank zset1 3 3
(integer) 1
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "one"
2) "2"
3) "two"
4) "2"
5) "three"
6) "3"
7) "five"
8) "5"zremrangebyscore:删除集合中下标为给定score区间内的元素
127.0.0.1:6379> zrange zset1 0 -1 withscores 1) "one" 2) "2" 3) "two" 4) "2" 5) "three" 6) "3" 7) "five" 8) "5" 127.0.0.1:6379> zremrangebyscore zset1 2 3 (integer) 3 127.0.0.1:6379> zrange zset1 0 -1 withscores 1) "five" 2) "5"
相关文章推荐
- Redis笔记整理(一):Redis安装配置与数据类型操作
- 二 redis学习笔记之数据类型
- redis学习笔记二之数据类型
- Redis学习笔记五、Key数据类型
- SQL Server数据库学习笔记整理-数据类型
- 数据类型笔记整理
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第20讲_js基本数据类型_js运算符1_学习笔记_源代码图解_PPT文档整理
- redis源码分析笔记2- redis的数据类型-动态字符串sds
- javascript学习笔记整理(概述、变量、数据类型简介)
- Redis源码分析笔记4-redis的数据类型-字典
- Redis学习笔记二、String数据类型
- Redis学习笔记1-Redis数据类型
- redis学习笔记二之数据类型
- Redis学习笔记-List数据类型
- 二 redis学习笔记之数据类型
- Redis整理(2)之数据类型string
- 二 redis学习笔记之数据类型
- Redis整理(5)之数据类型list
- Redis学习笔记---数据类型二(set、sortedset)
- Redis 学习笔记2-redis数据类型