您的位置:首页 > 数据库 > Redis

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不存在则先创建。

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) 25
hexists:测试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) 0
smembers:查看元素

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 set3
sinter:返回所有给定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) 1
zrevrank:返回名称为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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: