- exists命令:用于判断一个key是否存在,存在则返回1,不存在则返回0
- move命令,和它的英文意思一样,用于移动一个key到指定的库
- expire 和 ttl 命令,expire命令可以给一个key设置一个过期时间,默认单位为秒,通过ttl命令可以查看到一个key剩余时间,如果剩余时间为-1则代表这个key为永久
-
type key :用于查看当前key的一个类型
-
set key value:设置一个key和一个value;
-
get key :根据key获得value;
-
append key “追加value”:给指定的key拼接一个字符串,如果这个key不存在,就相当于set一个key-value;
-
strlen key:获取这个key的字符串长度;
-
当value的值为数字时,可以使用incr key(key值加1),decr(key值减1)
-
incrby key 步长 :可以给key的value设置一次增加多少,decrby类似,一次减多少
-
getrange key start end : 获取key的value从start到end长度的字符串值,下标从零开始,如果end的值为-1就是直接get这个key的value
-
setrange key start value : 给key从某下标开始用value替换后面的值
-
setex(set with expire) : set一个key并设置过期时间
-
setnx(set if not exists):如果key不存在进行设置,存在则返回0(失败) 在分布式锁中经常使用
-
mset key1 value1 key2 value2 : 用于批量设置key-value
-
mget key1 key2:用于批量获得
-
msetnx : setnx的一个增强版,可以批量设置,其中每一个key都会判断是否存在,要注意的是,如果有一个key设置失败,那么整个都会设置失败,可以将msetnx理解成一个原子操作。
-
getset :先对key进行一个get操作,如果key不存在直接返回nil并设置这个key,如果存在则返回key的value值并将新的value覆盖之前那个。
简单介绍一下list的数据结构,可以看成一个队列,然后left可以看成头部,然后right可以看成尾部
-
lpush : 当key不存在的时候创建一个list类型的key-value,并在其头部添加元素可以添加一个或多个
-
rpush : 当key不存在的时候创建一个list类型的key-value,并在其尾部添加元素可以添加一个或多个
-
lrange : 可以联系getrange进行记忆,不过这里是取一定范围的元素,下标start也从0开始,然后end为-1时表示展示全部。
127.0.0.1:6379> lpush mylist xiec zhangs # 创建一个key为mylist的list结构的key-value ,并添加两个元素,先添加xiec,然后再zhangs,所以第一个元素为zhangs
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1 # 通过lrange进行查看,也可以看出第一个元素是zhangs
-
“zhangs”
-
“xiec”
127.0.0.1:6379> rpush mylist lisi # rpush 可以理解成再尾部添加一个元素,所以lisi再最后
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
-
“zhangs”
-
“xiec”
-
“lisi”
-
lpop:移除最左(头部)的一个元素
-
rpop: 移除最右边(尾部)的一个元素
127.0.0.1:6379> lpush mylist hello1 # 通过lpush命令为key为mylist的增加三个元素
(integer) 1
127.0.0.1:6379> lpush mylist hello2
(integer) 2
127.0.0.1:6379> lpush mylist hello3
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1 #通过lrange进行查看
-
“hello3”
-
“hello2”
-
“hello1”
127.0.0.1:6379> lpop mylist # 移除mylist中第一个元素(头部第一个)
“hello3”
127.0.0.1:6379> rpop mylist # 移除mylist尾部第一个元素
“hello1”
127.0.0.1:6379> lrange mylist 0 -1 # 再次通过lrange进行查看发现只剩一个
- “hello2”
- lindex: 通过指定的下标来获取元素,下标从0开始
127.0.0.1:6379> lrange mylist 0 -1 # 对mylist中元素进行查看
-
“hello1”
-
“hello2”
-
“hello3”
127.0.0.1:6379> lindex mylist 2 #获取下标为2的list中的元素
“hello3”
-
llen : 返回list列表的长度
-
lrem: 移除list列表中的指定元素,可以一次移除多个
-
ltrim: 相当于剪辑,获取指定范围的list的元素,其他元素将被移除
127.0.0.1:6379> lrange mylist 0 -1 #查看mylist中的元素
-
“hello4”
-
“hello3”
-
“hello2”
-
“hello1”
127.0.0.1:6379> llen mylist # 获取长度
(integer) 4
127.0.0.1:6379> lpush mylist hello1 # 为了测试lrem可以移除多个增加一个hello1,list是有序的,所以元素可以重复
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
-
“hello1”
-
“hello4”
-
“hello3”
-
“hello2”
-
“hello1”
127.0.0.1:6379> lrem mylist 1 hello4 #移除mylist中值为hello4的元素,然后移除1个
(integer) 1
127.0.0.1:6379> lrange mylist 0 -1
-
“hello1”
-
“hello3”
-
“hello2”
-
“hello1”
127.0.0.1:6379> lrem mylist 2 hello1 #移除mylist中值为hello1的元素,然后移除2个
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
-
“hello3”
-
“hello2”
127.0.0.1:6379> rpush mylist hello1 # 为测试方便增加一个元素
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
-
“hello3”
-
“hello2”
-
“hello1”
127.0.0.1:6379> ltrim mylist 0 1 #对mylist中的元素进行截取,截取第0~1个
OK
127.0.0.1:6379> lrange mylist 0 -1
-
“hello3”
-
“hello2”
-
rpoplpush : 返回并移除list中的最后一个元素,并把该元素加入到一个新的list中
-
lset : 通过指定的下标为list设置一个值,类似于update,如果下标再list中不存在,或者list不存在都会报错
-
linsert : 给list再指定元素前或者后来插入一个元素
127.0.0.1:6379> lpush mylist hello1 hello2 hello3 #创建mylist并新增三个元素
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
-
“hello3”
-
“hello2”
-
“hello1”
127.0.0.1:6379> rpoplpush mylist mylist1 # 将mylist中最后一个元素弹出,并增加到mylist1中,如果mylist1不存在则会创建
“hello1”
127.0.0.1:6379> lrange mylist 0 -1
-
“hello3”
-
“hello2”
127.0.0.1:6379> keys *
-
“mylist”
-
“mylist1”
127.0.0.1:6379> lrange mylist1 0 -1
- “hello1”
127.0.0.1:6379> lset mylist 0 xiec # 将下标为0的元素更新为xiec
OK
127.0.0.1:6379> lrange mylist 0 -1
-
“xiec”
-
“hello2”
127.0.0.1:6379> linsert mylist before xiec lisi # 再mylist中再元素值为xiec的前面增加一个lisi元素
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
-
“lisi”
-
“xiec”
-
“hello2”
Set集合:set和list最主要的区别和java集合类似,里面的元素无序,并且不可以重复
-
sadd: 用于创建一个set类型的key-value 类型的键值对,并往里面增加一个或多个值
-
smembers : 查看一个set集合中的所有元素
-
sismember : 判断一个元素是否再set集合中,存在返回1,不存在返回0
-
scard : 获取set集合的长度
127.0.0.1:6379> sadd myset hello word xiec
(integer) 3
127.0.0.1:6379> smembers myset
-
“xiec”
-
“word”
-
“hello”
127.0.0.1:6379> sismember myset xiec
(integer) 1
127.0.0.1:6379> scard myset
(integer) 3
-
srem: 移除set集合中一个具体的元素
-
srandmember : 从set 集合中随机取出一个或多个值
-
spop : 随机从set集合中移除一个元素
-
smove : 从一个set集合中移动一个元素到另一个set集合中,如果另一个set集合不存在则会创建
127.0.0.1:6379> flushdb #为演示先清空数据库
OK
127.0.0.1:6379> sadd myset hello word xiec happy
(integer) 4
127.0.0.1:6379> srem myset hello # 从myset中移除值为hello的元素
(integer) 1
127.0.0.1:6379> smembers myset #查看myset中的元素
-
“xiec”
-
“word”
-
“happy”
127.0.0.1:6379> srandmember myset # 从myset集合中随机取出一个值,并不会从set集合中删除
“word”
127.0.0.1:6379> smembers myset
-
“xiec”
-
“word”
-
“happy”
127.0.0.1:6379> spop myset # 从set集合中随机选取一个元素并删除
“xiec”
127.0.0.1:6379> smembers myset
-
“word”
-
“happy”
127.0.0.1:6379> smove myset myset1 word # 将myset集合中的world元素移动到myset1中myset1不存在则会创建
(integer) 1
127.0.0.1:6379> keys *
-
“myset1”
-
“myset”
127.0.0.1:6379> smembers myset1
- “word”
-
sdiff : 计算两个集合的差集
-
sinter : 计算两个集合的交集
-
sunion : 计算两个集合的并集
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> sadd set2 c d e f
(integer) 4
127.0.0.1:6379> sdiff set1 set2 # 差集,set1减去set2剩下的就是a,b
-
“b”
-
“a”
127.0.0.1:6379> sinter set1 set2 #交集,很容易理解,就是两个set集合的共同元素
-
“d”
-
“c”
127.0.0.1:6379> sunion set1 set2 #并集,就是把两个集合的所有元素
-
“f”
-
“b”
-
“e”
-
“a”
-
“d”
-
“c”
Hash:hash和String的命令很类似,可以联合记忆,hash的value是一个map集合。
====================================================================================================================
-
hset :设置一个hash类型的key value
-
hget : 从hash的map中取出具体key的值
-
hmset : 和String类型的mset类似,这个可以批量设置map中的键值对
-
hmget : 同时获取多个map中多个key的value
127.0.0.1:6379> hset myhash name xiec
(integer) 1
127.0.0.1:6379> hget myhash name
“xiec”
127.0.0.1:6379> hmset myhash age 23 sex nan
OK
127.0.0.1:6379> hmget myhash name age
-
“xiec”
-
“23”
-
hgetall : 获取一个hash中的全部元素,以key-value形式展示
-
hdel : 删除hash中的一个key,删除时value也会同步删除
-
hlen : 获取hash中有多少个key
127.0.0.1:6379> hset myhash name xiec
(integer) 1
127.0.0.1:6379> hget myhash name
“xiec”
127.0.0.1:6379> hmset myhash age 23 sex nan
OK
127.0.0.1:6379> hmget myhash name age
-
“xiec”
-
“23”
127.0.0.1:6379> hgetall myhash
-
“name”
-
“xiec”
-
“age”