redis提供五种数据类型:
string,hash,list,set及zset(sorted set)。
第一种
String
:key-value
(做缓存)
命令不区分大小写,
key
区分大小写
incr key
自增
decr key
自减
第二种
Hash
:key-fields-values
(做缓存)
相当于一个
key
对应一个
map
M
ap
中 还有
key-value
第三种
List
:有顺序
可重复
第四种
Set
:无顺序,不能重复
第五种
SortedSet
(zset
):有顺序,不能重复
zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。
redis
整合
spring
<!--
redis
连接池
-->
<
bean
id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig" >
<
property
name="maxTotal" value="100" ></property>
</
bean
>
<
bean
id="jedisPool" class="redis.clients.jedis.JedisPool" >
<
constructor-arg
index="0" ref="jedisPoolConfig" />
<
constructor-arg
index="1" value="192.168.25.142" type="java.lang.String" />
<
constructor-arg
index="2" value="6379" />
</
bean
>
对
value操作的命令
exists(key)
:确认一个
key
是否存在
del(key)
:删除一个
key
type(key)
:返回值的类型
keys(pattern)
:返回满足给定
pattern
的所有
key
randomkey
:随机返回
key
空间的一个
key
rename(oldname, newname)
:将
key
由
oldname
重命名为
newname
,若
newname
存在则删除
newname
表示的
key
dbsize
:返回当前数据库中
key
的数目
expire
:设定一个
key
的活动时间(
s
)
ttl
:获得一个
key
的活动时间
select(index)
:按索引查询
move(key, dbindex)
:将当前数据库中的
key
转移到有
dbindex
索引的数据库
flushdb
:删除当前选择数据库中的所有
key
flushall
:删除所有数据库中的所有
key
对
String操作的命令
set(key, value)
:给数据库中名称为
key
的
string
赋予值
value
get(key)
:返回数据库中名称为
key
的
string
的
value
getset(key, value)
:给名称为
key
的
string
赋予上一次的
value
mget(key1, key2,…, key N)
:返回库中多个
string
(它们的名称为
key1
,
key2…
)的
value
setnx(key, value)
:如果不存在名称为
key
的
string
,则向库中添加
string
,名称为
key
,值为
value
setex(key, time, value)
:向库中添加
string
(名称为
key
,值为
value
)同时,设定过期时间
time
mset(key1, value1, key2, value2,…key N, value N)
:同时给多个
string
赋值,名称为
key i
的
string
赋值
value i
msetnx(key1, value1, key2, value2,…key N, value N)
:如果所有名称为
key i
的
string
都不存在,则向库中添加
string
,名称
key i
赋值为
value i
incr(key)
:名称为
key
的
string
增
1
操作
incrby(key, integer)
:名称为
key
的
string
增加
integer
decr(key)
:名称为
key
的
string
减
1
操作
decrby(key, integer)
:名称为
key
的
string
减少
integer
append(key, value)
:名称为
key
的
string
的值附加
value
substr(key, start, end)
:返回名称为
key
的
string
的
value
的子串
对
List操作的命令
rpush(key, value)
:在名称为
key
的
list
尾添加一个值为
value
的元素
lpush(key, value)
:在名称为
key
的
list
头添加一个值为
value
的 元素
llen(key)
:返回名称为
key
的
list
的长度
lrange(key, start, end)
:返回名称为
key
的
list
中
start
至
end
之间的元素(下标从
0
开始,下同)
ltrim(key, start, end)
:截取名称为
key
的
list
,保留
start
至
end
之间的元素
lindex(key, index)
:返回名称为
key
的
list
中
index
位置的元素
lset(key, index, value)
:给名称为
key
的
list
中
index
位置的元素赋值为
value
lrem(key, count, value)
:删除
count
个名称为
key
的
list
中值为
value
的元素。
count
为
0
,删除所有值为
value
的元素,
count>0
从头至尾删除
count
个值为
value
的元素,
count<0
从尾到头删除
|count|
个值为
value
的元素。
lpop(key)
:返回并删除名称为
key
的
list
中的首元素
rpop(key)
:返回并删除名称为
key
的
list
中的尾元素
blpop(key1, key2,… key N, timeout)
:
lpop
命令的
block
版本。即当
timeout
为
0
时,若遇到名称为
key i
的
list
不存在或该
list
为空,则命令结束。如果
timeout>0
,则遇到上述情况时,等待
timeout
秒,如果问题没有解决,则对
key i+1
开始的
list
执行
pop
操作。
brpop(key1, key2,… key N, timeout)
:
rpop
的
block
版本。参考上一命令。
rpoplpush(srckey, dstkey)
:返回并删除名称为
srckey
的
list
的尾元素,并将该元素添加到名称为
dstkey
的
list
的头部
对
Set操作的命令
sadd(key, member)
:向名称为
key
的
set
中添加元素
member
srem(key, member)
:删除名称为
key
的
set
中的元素
member
spop(key)
:随机返回并删除名称为
key
的
set
中一个元素
smove(srckey, dstkey, member)
:将
member
元素从名称为
srckey
的集合移到名称为
dstkey
的集合
scard(key)
:返回名称为
key
的
set
的基数
sismember(key, member)
:测试
member
是否是名称为
key
的
set
的元素
sinter(key1, key2,…key N)
:求交集
sinterstore(dstkey, key1, key2,…key N)
:求交集并将交集保存到
dstkey
的集合
sunion(key1, key2,…key N)
:求并集
sunionstore(dstkey, key1, key2,…key N)
:求并集并将并集保存到
dstkey
的集合
sdiff(key1, key2,…key N)
:求差集
sdiffstore(dstkey, key1, key2,…key N)
:求差集并将差集保存到
dstkey
的集合
smembers(key)
:返回名称为
key
的
set
的所有元素
srandmember(key)
:随机返回名称为
key
的
set
的一个元素
对
zset(sorted set)操作的命令
zadd(key, score, member)
:向名称为
key
的
zset
中添加元素
member
,
score
用于排序。如果该元素已经存在,则根据
score
更新该元素的顺序。
zrem(key, member)
:删除名称为
key
的
zset
中的元素
member
zincrby(key, increment, member)
:如果在名称为
key
的
zset
中已经存在元素
member
,则该元素的
score
增加
increment
;否则向集合中添加该元素,其
score
的值为
increment
zrank(key, member)
:返回名称为
key
的
zset
(元素已按
score
从小到大排序)中
member
元素的
rank
(即
index
,从
0
开始),若没有
member
元素,返回
“nil”
zrevrank(key, member)
:返回名称为
key
的
zset
(元素已按
score
从大到小排序)中
member
元素的
rank
(即
index
,从
0
开始),若没有
member
元素,返回
“nil”
zrange(key, start, end)
:返回名称为
key
的
zset
(元素已按
score
从小到大排序)中的
index
从
start
到
end
的所有元素
zrevrange(key, start, end)
:返回名称为
key
的
zset
(元素已按
score
从大到小排序)中的
index
从
start
到
end
的所有元素
zrangebyscore(key, min, max)
:返回名称为
key
的
zset
中
score >= min
且
score <= max
的所有元素
zcard(key)
:返回名称为
key
的
zset
的基数
zscore(key, element)
:返回名称为
key
的
zset
中元素
element
的
score
zremrangebyrank(key, min, max)
:删除名称为
key
的
zset
中
rank >= min
且
rank <= max
的所有元素
zremrangebyscore(key, min, max)
:删除名称为
key
的
zset
中
score >= min
且
score <= max
的所有元素
zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX)
:对
N
个
zset
求并集和交集,并将最后的集合保存在
dstkeyN
中。对于集合中每一个元素的
score
,在进行
AGGREGATE
运算前,都要乘以对于的
WEIGHT
参数。如果没有提供
WEIGHT
,默认为
1
。默认的
AGGREGATE
是
SUM
,即结果集合中元素的
score
是所有集合对应元素进行
SUM
运算的值,而
MIN
和
MAX
是指,结果集合中元素的
score
是所有集合对应元素中最小值和最大值。
对
Hash操作的命令
hset(key, field, value)
:向名称为
key
的
hash
中添加元素
field<—>value
hget(key, field)
:返回名称为
key
的
hash
中
field
对应的
value
hmget(key, field1, …,field N)
:返回名称为
key
的
hash
中
field i
对应的
value
hmset(key, field1, value1,…,field N, value N)
:向名称为
key
的
hash
中添加元素
field i<—>value i
hincrby(key, field, integer)
:将名称为
key
的
hash
中
field
的
value
增加
integer
hexists(key, field)
:名称为
key
的
hash
中是否存在键为
field
的域
hdel(key, field)
:删除名称为
key
的
hash
中键为
field
的域
hlen(key)
:返回名称为
key
的
hash
中元素个数
hkeys(key)
:返回名称为
key
的
hash
中所有键
hvals(key)
:返回名称为
key
的
hash
中所有键对应的
value
hgetall(key)
:返回名称为
key
的
hash
中所有的键(
field
)及其对应的
value