一、Strings
String是最简单的类型,一个key对应一个value,string类型是二进制安全的。
1、Set方法
如 name = tianhu.peng
>set name tianhu.peng
>get name -- tianhu.peng
>set name buzz
>get name -- buzz
2、Setnx nx=> not exist
>set name tianhu.peng
>get name -- buzz
3、Setex ex指定有效期
>setex age 10 30
10 9 8 7 6 5 4
>get age -- 30
3 2 1
>get age -- nil
>get age 30 永久有效
4、setrange 替换
>set mail buzztty@163.com
>setrange name 8 gmail.com
>get mail -- buzztty@gmail.com
5、mset 一次设置多个key值 返回0所有都不存在
mset key1 val1 key2 val2 key3 val3
>get key1 --val1
>get key2 --Val2
>get key3 --Val3
6、msetnx 一次性设置多个key值,如果存在,所有设置失败
>msetnx key3 --val3.1 key4 --val4
7、getset 设置一个值,并返回一个旧值
>getset key4 val4.1
8、getrange 获取key的value值的子字符串
>set name buzztty
>getrange name 0 5 --buzztt
9、mget批量获取
> mget key1 key2 key3 key4
10、incr <==> ++ decr <==>--
> set age 30
>incr age
11、incrby 设置步长(如果不存在,就新增) decrby --
>incrby nianling
>incrby nianling 5 -- 加5
>incrby nianling -5 --减5
12、 append 追加
>set mail buzzty
>append mail @gmail.com
13、strlen 长度
>setrlen mail
二、hashes数据类型
Redis hash是一个string类型的field和value的映射表。它的添加、删除操作都是0(1)(平均)
hash特别适用于存储对象
1、hset 设置值
>hset user:001 name buzz
>hget user:001 name ---buzz
2、hsetnx 不能设置存在的
>hset user:001 name buzz
>hset user:001 name buzztty -- 设置不成功
3、hmset 批量设置
>hmset user:001 name buzz age 30
4、hmget 批量获取(批量返回)
>hmget user:001 name age
5、hincrby 加加
>hincrby user:001 age 20 -- 50
6、hexists 字段是否存在
>hexists user:001 sex
7、hlen 返回字段长度
>hlen user:003
8、hdel 删除指定字段
>hdel user:003 age
9、hkeys 返回所有字段
>hkeys user:003
10、hvals 返回所有值
>hvals user:003
11、hgetall 返回所以的field和values
>hgetall user:003
三、list类型
redis中的list是一个双向链表结构,主要功能就是push、pop和获取一个范围的所有值等,操作中key理解为链表的名称。
因为list类型的特性,我们可以将其作为栈又可以作为队列
栈的特性:先进后出
队列的特性:先进先出
1、lpush 在key对应的list头部压入一个元素 (从头压入,从尾出来)
lpush mylist 'world'
lpush mylist 'hello'
lrang mylist 0 -1 显示1)"hello" 2)"world"
2、rpush 在key对应的list尾部压入一个元素(从尾压入,从头出来)
rpush mylist2 'hello'
rpush mylist2 'world'
lrange mylist2 0 -1 显示1) "hello" 2) "world"
3、linsert 在key对应的list特定位置的前或后添加字符
rpush mylist3 "world"
linsert mylist3 before "world" "hello" (也有after关键字)
lrang mylist3 0 -1 显示1) "hello" 2) "world"
4、lset设置list中指定下标的元素值
rpush mylist4 "hello"
lset mylist4 0 "world"
lrange mylist4 0 -1 显示1)"world"
5、lrem从key对应的list中删除n个和value相同的元素(n<0)从尾部 (n=0)全部
rpush mylist5 "hello"
rpush mylist5 "hello"
lrm mylist5 1 "hello" lrange mylist5 0 -1
lrm mylist5 -1 "hello" lrange mylist5 0 -1
6、ltrim保留指定key的值范围内的数据
rpush mylist6 "one"
rpush mylist6 "two"
rpush mylist6 "three"
ltrim mylist6 1-1 (two) ltrim mylist6 1-2(two) ltrim mylist6 1 -3 (two three)
7、lpop从list头部删除元素并返回元素
lrange mylist7 0 -1 // 1 2 3 4 5 6 7
lpop mylist7 // 1
8、rpop从list尾部删除元素并返回删除元素
rpop mylist7 // 7
9、rpoplpush 从第一个list的尾部移除的元素并添加到第二个list的头部
rpush mylist8 1
rpush mylist8 2
rpush mylist9 3
rpush mylist9 4
rpoplpush mylist8 mylist9
lrange mylist8 0 -1 // 1
lrange mylist9 0 -1 // 2 3 4
10、lindex返回名称为key的list中index位置的元素
rpush mylist10 "a"
rpush mylist10 "b"
rpush mylist10 "c"
lindex mylist10 2 // c
lindex mylist10 1 // b
11、llen返回key对应list的长度
llen mylist10 // 3
四、sets类型
set就是集合,它是string类型无序集合
set是通过hash table实现的
集合我们可以取并集、交集、差集
1、sadd 向名称为key的set中添加元素
sadd myset1 "hello"
sadd myset1 "world"
sadd myset1 "world" // 添加相同的元素,不能成功
smembers myset1
2、srem 删除名称为key的set中的元素
sadd myset2 "one"
sadd myset2 "two"
sadd myset2 "three"
srem myset2 "two" //删除 two元素
3、spop随机返回并删除名称为key的set中的一个元素(因为sets是无序的集合)
sadd myset3 "one"
sadd myset3 "two"
spop myset3 //随机
4、sdiff返回所有给定key与第一个key的差集
myset41 one two
myset42 one three
sdiff myset41 myset42 // 这里返回two
5、sdiffstore返回所有给定key与第一个key的差集并将结果存储为另一个key
sdiffstore myset5 myset41 myset42
6、sinter返回所有给定key的交集
sinter myset41 myset42 // one
7、sinterstore返回所有给定集合的交集并将结果放在另一个key中
sinterstore myset7 myset41 myset42
8、sunion返回所有给定key的并集
sunion myset41 myset42 // one two three
9、sunionstore将并集的结果放入一个集合中
sunion myset9 myset41 myset42
smemebers myset9
10、smove 从第一个key对应的set中移除元素并添加到第二个对应的set中
smembers myset101 // one two
smembers myset102 // one three
smove myset101 myset102 two
smembers myset101 // one
smembers myset102 // two one three
11、scard 返回名称为key的set的元素个数
scard myset102 //3
12、sismember 是否包含元素
sismember myset102 one // 返回1
sismember myset102 four // 返回0
13、srandmember 随机返回一个元素
srandmember myset102 // 随机返回一个元素值,但不是删除
五、sorted sets类型 ----有序集合(zset)
sorted set 是set的一个升级版本,它在set的基础上增加了一个顺序属性
1、zadd 向名称为key的zset中添加member, score用于排序,如果该元素存在,则更新其顺序
zadd myzset1 1 one
zadd myzset1 2 two
zadd myzset1 3 two
zrange myzset1 0 -1 withscores 显示1) one 2)1 3)two 3) 3
2、zrem 删除元素
zrem myzset1 four //删除没有的元素返回0
zrem myzset1 two // 返回1
3、zincrby 以指定值增加
zadd myset3 1 one
zadd myset3 2 two
zincrby myset3 2 one // 存在了one,将会1+2=3
zrange myzset3 0 -1 withscores
1)two 2)2 3)one 4)3
2、zrank 返回名称为key的zset中member元素的排名(按score从小到大排序)即下标
zrank myzset3 one // 1
zrank myzset3 two //0
(从0开始连续的)
zrange myset3 0 -1
3、zrevrank 与zrank相反
zrevrank myset3 one // 0
zrevrank myset3 two // 1
4、zrevrange与zrange相反 反序输出
zrange myset3 0 -1 withscores
zrevrange myset3 0 -1 withscores
5、zrangebyscore 根据score显示
zrange myzet5 one 1 two 2 three 3
zrangebyscore myzset3 2 3 withscore two 2 three 3
6、zcount 返回集合中score在给定区间的数量
zcount myzset3 2 3 // 2
7、zcard 返回集合中所有元素个数
zcard myzset3 //3
8、zremrangebyrank 删除集合中排名给定的元素
zremrangebyrank myzset3 1 1 // one 1 three 3
9、zremrangebyscore 按顺序
zremrangebyscore myzset3 1 2 // three 3
上面就是redis的五中基本数据类型