1、key关键字
1、set/get/keys/del
set u1 zhang3 #####添加数据
get u1 #####获取数据
exists u1 #####获取数据
del u1 #####删除数据
keys * #####获取所有数据
2、expire/ttl/type
expire u1 10 #####设置过期时间10秒
ttl u1 #####查看过期时间还剩多少秒
####-2表示已过期,-1表示永不过期
type u1 #####查看u1对于value的数据类型
3、select/move/flushdb/flushall
注:
redis安装默认有16个库,标号0-15,可以使用select切换
select 7 #####切换到第8个库
move u2 0 #####将当前库的u2移动到第1个库中
flushdb #####删除当前数据库的内容
flushall #####删除所有16个数据块的内容
注:
在redis中1代表命令执行成功,0代表执行失败
2、String类型
1、set/get/del/append/strlen
set k1 v1 #####设置数据
get k1 #####获取数据
del k1 #####删除数据
append k1 "要追加的内容" #####在某个key的尾部追加内容
strlen k1 #####返回key的内容的长度
2、incr/decr/incrby/decrby/incrbyfloat/decrbyfloat
注:
必须是数字
incr k1 #####k1的内容加1
decr k1 #####k1的内容减1
incrby k1 2 #####k1的内容加2
decrby k1 2 #####k1的内容减2
incrbyfloat k1 0.5 #####k1的内容加0.5
decrbyfloat k1 0.5 #####k1的内容减0.5
3、setrange/getrange
setrange k1 1 x #####在k1的下标1前添加内容x,由于长度不变,尾部元素溢出删除
getrange k1 0 -1 #####获取所有元素,前一个为起始下标,后一个为结束下标
4、setex/setnx
setex k1 10 v1 #####建立k1-v1键值时设置10秒过期
setnx k1 10 v1 #####建立k1-v1键值时设置10秒过期(只有k1不存在才会执行成功)
5、mset/mget/msetnx
mset k1 v1 k2 v2.... #####设置数据,两个全成功才成功
mget k1 k2..... #####获取数据
msetnx k1 v1 k2 v2 #####设置数据,两个全成功才成功(只有k1、k2不存在才会执行成功)
总结:
redis中最基本的数据类型,相当于java中的Map<String,Object>。
String类型是二进制安全的,这意味着String可以包含任何数据,一个序列化对象,一张图片,甚至一部电影。
String类型的value顶多512MB。
3、List列表类型(相当于一个key对应多个value)
1、lpush/rpush/lrange
lpush list01 1 2 3 4 5 #####1-5逐个从左边进入
rpush list02 1 2 3 4 5 #####1-5逐个从右边进入
#####可以用来给存在的列表中添加数据
lrange list01 0 -1 #####自上而下显示5 4 3 2 1
lrange list02 0 -1 #####自上而下显示1 2 3 4 5
2、lpop/rpop/rpoplpush
lpop list01 #####从list01中弹出5
rpop list01 #####从list01中弹出1
rpoplpush list01 list02
#####弹出list01中的最右元素,放到list02的最左边
注:
弹出后该元素不存在list集合中
3、lindex/llen
lindex list01 2 #####返回2的索引,从左边开始数
llen list01 #####返回集合的长度
4、lrem/ltrim/lset/linsert
lrem list01 1 2 #####从list01中删除1个2,从左往右遍历
ltrim list01 1 3 #####将list01中索引介于1-3的子串截取赋给list01,从左往右遍历
lset list01 1 007 #####将list01中索引为1的内容替换成007,从左往右遍历
linsert list01 before 1 7 #####在list01元素1前插入元素7,从左往右遍历
linsert list01 after 1 7 #####在list01元素1后插入元素7,从左往右遍历
总结:
底层是双向循环链表。
字符串链表,按照插入顺序排序。
值全部移除,集合消失。
头尾操作效率几极高,中间效率一般。
4、Set集合类型(相当于一个key对应多个value)
1、sadd/smembers/sismember
sadd set01 1 1 2 2 3 3 #####只会添加1 2 3 ,重复元素不添加。
#####sadd也可以用来往以存在的set集合中添加元素
smembers set01 #####查看set01的元素
sismember set01 1 #####查看1是否是set01的元素。是返回1,不是返回0
2、scard/srem/srandmember/spop
scard set01 ####返回set01元素个数
srem set01 1 #####从set01中删除元素1
srandmember set01 3 #####从set01中随机出3个元素,不移除
spop set01 #####从set01中随机出1个元素,移除
3、smove
smove set01 set02 1
#####将sey01中的1剪切到set02中,set02不存在会创建
4、差集sdiff/交集sinter/并集sunion
sdiff set01 set02 #####前一个减后一个
sinter set01 set02 #####返回两个相同的元素
sunion set01 set02 #####范湖两个集合中所有元素
总结:
无序集合,底层是hadhtable。
5、Hash(key-value形式不变,只是value是一个键值对)
非常重要,十分重要,极其重要
1、hset/hget/hmset/hmget/hgetall/hdel(重要)
hset user u1 zhang3 #####设置数据
hget user u1 #####取数据
hmset user u1 zhang3 u2 li4..... #####设置多个数据
hmget user u1 u2..... #####获取多个数据
hgetall user #####获取所有数据
hdel user u1 #####删除user中的u1-zhang3键值对
2、hlen/hexists
hlen user #####返回内部键值对个数
hexists user u1 #####判断user中是否有u1的键值对
3、hkeys/hvals(重要)
hkeys user #####返回所有key
hvals user #####范湖所有value
4、hincrby/hincrbyfloat #####value必须是数值类型
hincrby user u1 2 #####给u1对应value加2
hincrbyfloat user u1 2.3 #####给u1对应value加2.3
5、hsetnx
hsetnx user u3 wang5 #####如果不存在,则添加
6、Zset集合(Sorted set 有序集合)
Zset:
和set一样,是String类型的集合,不允许重复。
每个元素都会关联一个double类型的分数,证实通过这个分数对集合中的元素进行从小到大的排序。
元素唯一,分数可以重复。
set: sadd user v1 v2 v3
zset: zadd user 60 v1 70 v2 80 v3
1、zadd/zrange/zrangebyscore/zrevrange
zadd zset01 60 v1 70 v2..... #####添加数据
zrange zset01 0 -1 #####查看数据
zrange zset01 0 -1 withscores #####查看数据带分数
zrangebyscore zset01 60 90 ######查看分数介于[60,90]之间数据
zrangebyscore zset01 60 (90 ######查看分数介于[60,90)之间数据
zrangebyscore zset01 (60 90 ######查看分数介于(60,90]之间数据
zrangebyscore zset01 60 90 limit 1 2
#####先查看分数介于[60,90]之间数据,再在结果数据中的从索引1开始取两个数
2、zrem/zcard/zcount/zrank/zscore/zrevrank
zrem zset01 v1 #####删除v1
zcard zset01 #####统计个数
zcount zset01 60 90 #####统计[60,90]之间的value个数
zrank zset01 v4 #####获取下标
zrevrank zset01 v4 #####获取下标,从右表开始
3、zrevrange/zrevrangebyscore
zrevrange user 0 -1 #####倒序输出
zrevrangebyscore user 90 60 #####倒序输出[60,90]之间的数据