本文共 9817 字,大约阅读时间需要 32 分钟。
keys*:查询当前的存储空间中,所有存在的key值
127.0.0.1:6379> keys *(empty list or set)127.0.0.1:6379>
set [key] [value]:设置存储的key-value结构的数据,value是字符串;覆盖已经存在的key-value数据
127.0.0.1:6379> set city beijingOK127.0.0.1:6379> keys *1) "city"127.0.0.1:6379>
127.0.0.1:6379> set city shanghaiOK127.0.0.1:6379> keys *1) "city"127.0.0.1:6379> get city"shanghai"127.0.0.1:6379> set city beijingOK127.0.0.1:6379> get city"beijing"
get [key]:获取当前key对应的value数据
127.0.0.1:6379> set name xiaoOK127.0.0.1:6379> get name"xiao"127.0.0.1:6379>
select [整数值默认0-15]:redis存在默认的0-15号的数据分库;16个数据库,默认使用0号,功能在现在不常用.是早期的遗留功能;java代码不支持分库的api
127.0.0.1:6379> keys *1) "city"2) "name"127.0.0.1:6379> select 1OK127.0.0.1:6379[1]> keys *(empty list or set)127.0.0.1:6379[1]>
exists [key]:查看当前redis节点是否包含查询的key-value数据;
get是否也具备这个功能?Get也具备这个功能,redis存储的字符串类型数据value达到最大值512m;get命令判断key的存在会占用读取value过程的资源,效率低;127.0.0.1:6379> exists name(integer) 1127.0.0.1:6379> exists nil(integer) 0127.0.0.1:6379>
del [key]:删除当前存储的key-value数据
127.0.0.1:6379> keys *1) "city"2) "name"127.0.0.1:6379> del name(integer) 1127.0.0.1:6379> keys *1) "city"
type [key]:查看当前key对应的value的数据类型
127.0.0.1:6379> type citystring
help [命令名称]:查询当前命令的使用规则
127.0.0.1:6379> help set SET key value [EX seconds] [PX milliseconds] [NX|XX] summary: Set the string value of a key since: 1.0.0 group: string
注意:help的返回内容不全面;真正需要查询某个命令的使用规则,可以到官网
flushall:将当前的数据库[0-15]的所有数据,flush到指定的持久化文件中(dump.rbd);可以代替清空当前数据库的key-value数据的功能;
127.0.0.1:6379> set name xiaoOK127.0.0.1:6379> set gender maleOK127.0.0.1:6379> keys *1) "city"2) "gender"3) "name"127.0.0.1:6379> flushall4599:M 23 Feb 11:23:35.394 * DB saved on diskOK127.0.0.1:6379> keys *(empty list or set)127.0.0.1:6379>
flushdb : 指定清空或者flush当前数据库的数据到磁盘文件中
127.0.0.1:6379> set name xiao 设置数据库0OK127.0.0.1:6379> set city beijingOK127.0.0.1:6379> keys *1) "city"2) "name"127.0.0.1:6379> select 1 设置数据库1OK127.0.0.1:6379[1]> keys *(empty list or set)127.0.0.1:6379[1]> set name xiaoOK127.0.0.1:6379[1]> set city beijingOK127.0.0.1:6379[1]> flushdb 清空当前数据库1OK127.0.0.1:6379[1]> keys *(empty list or set)127.0.0.1:6379[1]> select 0 并不会影响数据库0OK127.0.0.1:6379> keys *1) "city"2) "name"127.0.0.1:6379>
incr、decr 自增,自减:对于字符串纯数字的数据可以进行自增和自减操作;
127.0.0.1:6379> set num1 100OK127.0.0.1:6379> incr num1(integer) 101127.0.0.1:6379> type num1string127.0.0.1:6379> set num2 oo100OK127.0.0.1:6379> incr num2(error) ERR value is not an integer or out of range 不能用自增自减操作非纯数字的字符串127.0.0.1:6379> decr num1(integer) 100127.0.0.1:6379>
incrby [key] [整数] decrby [key] [整数]:自增自减指定数量的值;
127.0.0.1:6379> incrby num1 5 自增5(integer) 105127.0.0.1:6379> decrby num1 50 自减50(integer) 55127.0.0.1:6379>
自增自减的使用情景:内存的数据库的计算需要消耗资源; 例如:上线人数:50399,数字时刻跳动的;不会一个一个添加或者减少;
apend [key] [value]:在指定key的value上追加数据;
127.0.0.1:6379> append city daxing(integer) 13127.0.0.1:6379> get city"beijingdaxing"127.0.0.1:6379>
expire [key] 时间数字(单位秒):设置当前key-value数据的存活时间;
127.0.0.1:6379> expire bomb 100(integer) 1127.0.0.1:6379> ttl bomb ttl的命令可以查看剩余的寿命(integer) 93寿命是整数-2代表超时,大于0代表存活描述,永久存活的值是-1127.0.0.1:6379> set bomb c4OK127.0.0.1:6379> expire bomb 100(integer) 1127.0.0.1:6379> ttl bomb(integer) 93127.0.0.1:6379> ttl bomb(integer) 88127.0.0.1:6379> set bomb2 c5OK127.0.0.1:6379> expire bomb2 10(integer) 1127.0.0.1:6379> ttl bomb2(integer) 7127.0.0.1:6379> ttl bomb2(integer) 6127.0.0.1:6379> ttl bomb2(integer) 5127.0.0.1:6379> ttl bomb2(integer) 0127.0.0.1:6379> ttl bomb2(integer) -2127.0.0.1:6379> ttl bomb2(integer) -2127.0.0.1:6379> ttl name(integer) -1127.0.0.1:6379> keys * 存活时间变为-2,则key不再存在1) "num01"2) "num03"3) "city"4) "num1"5) "num02"6) "num2"7) "name"127.0.0.1:6379> ttl num1(integer) -1127.0.0.1:6379>
使用场景:可以作为抢单,秒杀的倒计时;如果单位是秒的话不够精确,至少要毫秒
pexpire [key]时间整数[毫秒]
127.0.0.1:6379> pexpire bomb3 15000(integer) 1127.0.0.1:6379> ttl bomb3(integer) 11
Hash类型:类似于对象,也是 属性-值 的结构
HGET key field HMSET key field value [field value…] HMGET key field value [field value…] HGETALL key127.0.0.1:6379> hset user username chenchen(integer) 1127.0.0.1:6379> hget user username"chenchen"127.0.0.1:6379> hset user username chen 覆盖原来的chenchen(integer) 0127.0.0.1:6379> keys user1) "user"127.0.0.1:6379> hgetall user 得到所有的 属性-值1) "username"2) "chen"127.0.0.1:6379> hset user age 30(integer) 1127.0.0.1:6379> hgetall user 得到所有的 属性-值1) "username"2) "chen"3) "age"4) "30"
HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。
hmset和hmget设置和获取对象属性
127.0.0.1:6379> hmset person username tony age 18OK127.0.0.1:6379> hmget person age username1) "18"2) "tony"127.0.0.1:6379> hgetall person 得到所有的属性---值1) "username"2) "tony"3) "age"4) "18"
hexists属性是否存在
127.0.0.1:6379> hexists killer(error) ERR wrong number of arguments for 'hexists' command127.0.0.1:6379> hexists killer a(integer) 0127.0.0.1:6379> hexists user username(integer) 1127.0.0.1:6379> hexists person age(integer) 1127.0.0.1:6379>
hdel删除对象字段
127.0.0.1:6379> hdel user age(integer) 1127.0.0.1:6379> hgetall user1) "username"2) "chen"127.0.0.1:6379> hgetall person1) "username"2) "tony"3) "age"4) "18"
只获取字段名hkeys或字段值hvals
127.0.0.1:6379> hkeys person 获取key为person的所有字段名1) "username"2) "age"127.0.0.1:6379> hvals person 获取key为person的所有字段值1) "tony"2) "18"
获取字段数量hlen
127.0.0.1:6379> hlen user(integer) 1127.0.0.1:6379> hlen person(integer) 2127.0.0.1:6379>
查看list:lrange [key] start stop
redis 127.0.0.1:6379> lrange mylist3 0 -1
起始位置start 结束位置stop 分别对应的是元素的下标, 如果stop=-1展示从start位置到结束的所有元素
lpush 在key对应list的头部添加字符串元素(上为头,下为尾)
redis 127.0.0.1:6379> lpush mylist "world"(integer) 1redis 127.0.0.1:6379> lpush mylist "hello"(integer) 2redis 127.0.0.1:6379> lrange mylist 0 -11) "hello"2) "world"redis 127.0.0.1:6379>
rpush 在key对应list的尾部添加字符串元素
redis 127.0.0.1:6379> rpush mylist2 "hello"(integer) 1redis 127.0.0.1:6379> rpush mylist2 "world"(integer) 2redis 127.0.0.1:6379> lrange mylist2 0 -11) "hello"2) "world"redis 127.0.0.1:6379>
linsert:在key对应list的特定位置之前或之后添加字符串元素
redis 127.0.0.1:6379> rpush mylist3 "hello"(integer) 1redis 127.0.0.1:6379> rpush mylist3 "world"(integer) 2redis 127.0.0.1:6379> linsert mylist3 before "world" "there"(integer) 3redis 127.0.0.1:6379> lrange mylist3 0 -11) "hello"2) "there"3) "world"redis 127.0.0.1:6379>redis 127.0.0.1:6379> linsert mylist3 after "world" "there"(integer) 4redis 127.0.0.1:6379> lrange mylist3 0 -11) "hello"2) "there"3) "world"4)”there”
lset:设置list中指定下标的元素值
redis 127.0.0.1:6379> rpush mylist4 "one"(integer) 1redis 127.0.0.1:6379> rpush mylist4 "two"(integer) 2redis 127.0.0.1:6379> rpush mylist4 "three"(integer) 3redis 127.0.0.1:6379> lset mylist4 0 "four"OKredis 127.0.0.1:6379> lset mylist4 -2 "five" 倒数第二OKredis 127.0.0.1:6379> lrange mylist4 0 -11) "four"2) "five"3) "three"redis 127.0.0.1:6379>
lrem:从key对应list中删除count个和value相同的元素.
count>0时,按从头到尾(上到下)的顺序删除redis 127.0.0.1:6379> rpush mylist5 "hello"(integer) 1redis 127.0.0.1:6379> rpush mylist5 "hello"(integer) 2redis 127.0.0.1:6379> rpush mylist5 "foo"(integer) 3redis 127.0.0.1:6379> rpush mylist5 "hello"(integer) 4redis 127.0.0.1:6379> lrem mylist5 2 "hello" 从最上面开始删除两个hello元素(integer) 2redis 127.0.0.1:6379> lrange mylist5 0 -11) "foo"2) "hello"redis 127.0.0.1:6379>
count<0时,按从尾到头(下到上)的顺序删除
redis 127.0.0.1:6379> rpush mylist6 "hello"(integer) 1redis 127.0.0.1:6379> rpush mylist6 "hello"(integer) 2redis 127.0.0.1:6379> rpush mylist6 "foo"(integer) 3redis 127.0.0.1:6379> rpush mylist6 "hello"(integer) 4redis 127.0.0.1:6379> lrem mylist6 -2 "hello" 从最下面开始删除两个hello元素(integer) 2redis 127.0.0.1:6379> lrange mylist6 0 -11) "hello"2) "foo"redis 127.0.0.1:6379>
count=0时,删除全部
redis 127.0.0.1:6379> rpush mylist7 "hello"(integer) 1redis 127.0.0.1:6379> rpush mylist7 "hello"(integer) 2redis 127.0.0.1:6379> rpush mylist7 "foo"(integer) 3redis 127.0.0.1:6379> rpush mylist7 "hello"(integer) 4redis 127.0.0.1:6379> lrem mylist7 0 "hello" 删除所有的hello元素(integer) 3redis 127.0.0.1:6379> lrange mylist7 0 -11) "foo"redis 127.0.0.1:6379>
ltrim:保留指定key 的值范围内的数据
redis 127.0.0.1:6379> rpush mylist8 "one"(integer) 1redis 127.0.0.1:6379> rpush mylist8 "two"(integer) 2redis 127.0.0.1:6379> rpush mylist8 "three"(integer) 3redis 127.0.0.1:6379> rpush mylist8 "four"(integer) 4redis 127.0.0.1:6379> ltrim mylist8 1 -1保留下标为1到最后(也就是删除下标为0的元素)OKredis 127.0.0.1:6379> lrange mylist8 0 -11) "two"2) "three"3) "four"
lpop:从list的头部删除元素,并返回删除元素
redis 127.0.0.1:6379> lrange mylist 0 -11) "hello"2) "world"redis 127.0.0.1:6379> lpop mylist 删除最上面的元素"hello"redis 127.0.0.1:6379> lrange mylist 0 -11) "world"redis 127.0.0.1:6379>
rpop:从list的尾部删除元素,并返回删除元素:
redis 127.0.0.1:6379> lrange mylist2 0 -11) "hello"2) "world"redis 127.0.0.1:6379> rpop mylist2 删除最下面的元素"world"redis 127.0.0.1:6379> lrange mylist2 0 -11) "hello"redis 127.0.0.1:6379>
rpoplpush:从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list是空或者不存在返回nil
redis 127.0.0.1:6379> lrange mylist5 0 -11) "three"2) "foo"3) "hello"redis 127.0.0.1:6379> lrange mylist6 0 -11) "hello"2) "foo"redis 127.0.0.1:6379> rpoplpush mylist5 mylist6"hello"redis 127.0.0.1:6379> lrange mylist5 0 -11) "three"2) "foo"redis 127.0.0.1:6379> lrange mylist6 0 -1 把第一个list的尾部元素hello添加到第二个1) "hello" list的头部。2) "hello" 结果是第一个list少一个元素,第二个list多一个元素3) "foo" redis 127.0.0.1:6379>
lindex:返回名称为key的list中index位置的元素
redis 127.0.0.1:6379> lrange mylist5 0 -11) "three"2) "foo"redis 127.0.0.1:6379> lindex mylist5 0"three"redis 127.0.0.1:6379> lindex mylist5 1"foo"redis 127.0.0.1:6379>
llen:返回key对应list的长度
redis 127.0.0.1:6379> llen mylist5(integer) 2redis 127.0.0.1:6379>
1)默认16个数据库,不能手动起数据库名称,默认0~15,默认0
2)keys和flushdb/flushall在实际开发环境下不要执行 3)它的命令都是原子性(单线程)自增自减,比如:论坛帖子数量, 4)再次set就是修改,它的值会被覆盖 5)pexpire单位毫秒,秒杀+事务 6)redis怎么保存对象?hash,使用string,k=user,v=json 7)管道pipe,本地文件中放数据,数据格式,快速导入,1s中导入上百万数据。管道缓存预热。提前把已经知道要缓存的内容,人工的进行设置。 8)redis.conf中在真实上线时,必须配置最大内存数。如果不配置,redis默认使用所有物理内存。一般值设置:512mb/1gb/2gb/5gb转载地址:http://nayai.baihongyu.com/