Redis共有5个数据类型String,hash,set,zset(有序集合),list。
一、String类型介绍
String类型是最简单的类型,一个key对应一个value ,string类型是二进制安全的。Redis的string类型可以存放任何数据,比如图片,序列化对象等。
string redis命令。
1.1.setnx设置key值为string类型的value,如果key已经存在,返回0,nx是not exist 的意思
1.2.setex设置key值为string类型的value,并设定此键值对应的有效期。
eg:set haircolor 10 red
10秒内
get haircolor
"red"
10秒后
get haircolor
(nil)
1.3.setrange设置指定key的value值的自字符串儿
eg:
127.0.0.1:6379> setrange name 3 aaa
(integer) 11
将键为name的value值从第三位开始替换为aaaa
结果
127.0.0.1:6379> get name
"lamaaarther"
1.4.mset可以设置多个key-value键值对
1.5.msetnx对应setnx 区别在于可以一次性设置多个键值对
1.6.mget获取多个key的value值
1.7.incr对某个值进行递增
1.8.incrby 一固定的值进行递增
1.9.decr 自减
1.10.decrby 对应incrby
1.11.appened追加
1.12.strlen 返回value长度
二、hashes数据类型及操作
hash是一个String类型的feild和value的映射表。它的添加、删除操作都是0(1)(平均)。hash是特别适合用于存储对象。相较于将对象的每一个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以方便的存取整个对象。
2.1hset
2.2hsetnx
2.3hmset批量设置
2.4hget 获取对象的某个字段
2.5hmget获取对象多有的值
2.6hincr对某个字段进行自增
2.7hincrby对多个字段进行递增
2.8hlen返回hash里的所有键数
eg:hlen user:001
2.9hdel 删除hash里的指定字段
eg:hdel user:001 age
2.10hkeys返回hash里的多有的key
eg:hkeys user:001
2.11hvals返回hash里的所有的key对应的值
2.12hgetall返回hash里的所有key-value
三、lists类型
List是一个链表结构,主要功能是push,pop,获取一个范围的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是String类型的双向链表。我们可以通过push,pop操作从立案表的头部或者尾部添加或者删除元素,这样list既可以作为栈也可以作为队列。
3.1lpush从list头部压入一个元素(栈)
3.2rpush从list尾部压入一个元素(队列)
3.3lrange 0 -1 表示从头部取到尾部,全部取出
3.4linsert 在key对应list的特定位置前或后添加字符串儿
eg: linsert list3 before one three
3.5lset 设置list中指定下标的元素值。(即替换指定下标的元素值)
3.6lrem 从key对应的list中删除n个和value相同的元素。(n<0从尾删除,n=0全部删除)
3.7ltrim 保留指定key的值范围内的数据
eg:ltrim list6 1 -1
3.8lpop 从list的头部删除元素,并返回删除元素
3.9rpop 从list的尾部删除元素,并返回删除元素
3.10rpoplpush 从第一个list的尾部移除元素并添加到第二个list的头部
3.11lindex 返回名称key的list中德index位置的元素
3.12llen 返回key对应list的长度四、sets类型
Set是集合,它是String类型的无序集合。set是通过hash table实现的,添加,删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blong的tag功能。
4.1sadd 向名称为key的set中添加元素
4.2smembers 查看名称为key的set中元素
4.3,srem 删除名称为key的set中的元素
4.4spop 随机弹出并删除名称为key的set中的一个元素
4.5sdiff 返回所有给定key与第一个key的差集
4.6sdiffstore 返回所有给定的key与第一个key的差集,并将结果存为另一个key
4.7sinter 返回所有给定key的交集
4.7sinterstore 返回所有给定的key与第一个key的交集,并将结果存为另一个key
4.8sunion返回所有给定key的并集
4.9sunionstore 返回所有给定的key与第一个key的并集,并将结果存为另一个key
4.10smove 从第一个key对应的set中移除memver并添加到第二个对应的set中
4.11scard 返回名称为key的set的元素个数
4.12sismember 测试member是否是名称为可以的set的元素
4.13srandmember 随机返回名称为key的set的一个元素,但不删除元素
五、sorted sets类型
sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性再添加修改元素的时候可以指定,每次制定后,zset会自动重新按新的值调整顺序。可以理解为有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。
5.1zadd 向名称为key的zset中添加元素member,score用于排序。如果该元素存在,则更新其顺序
eg:
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
注:后来的two会把序号覆盖掉
5.2zrange (withscores)
5.3zrem删除名称为key的zset中的元素memeber
eg:
127.0.0.1:6379> zrem zset1 one
(integer) 1
5.4zincrby 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment否则向该元素集合中添加该元素,其score的值为increment
eg:
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "3"
127.0.0.1:6379> zincrby zset1 2 two
"5"
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "5"
5.5zrank 返回名称为key的zset中member元素的排名(按score从小到大的顺序排序)即下标
eg:
127.0.0.1:6379> zrange zset2 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "five"
10) "5"
127.0.0.1:6379> zrank zset2 two
(integer) 1(two在zset2中的下标,而不是score)
5.6zrevrank 返回名称为key的zset中member元素的排名(按score从大到小的顺序排序)即下标
5.7zrevrange (withscores) 降序排序返回
5.8zrangebyscore (withscores)
eg:
127.0.0.1:6379> zrange zset2 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "five"
10) "5"
127.0.0.1:6379> zrangebyscore zset2 2 4 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
5.9zcount 根据score值返回指定的个数
5.10zcard 返回集合中的元素个数
5.11zremrangebyrank 删除集合中排名在给定区间的元素(下标的区间范围)
127.0.0.1:6379> zrange zset2 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "five"
10) "5"
127.0.0.1:6379> zremrangebyrank zset2 1 1
(integer) 1
127.0.0.1:6379> zrange zset2 0 -1 withscores
1) "one"
2) "1"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
5.11zremrangebyscore 删除集合中排名在给定区间的元素(score的区间范围)