redis基础命令
一、redis特点:
1.以key,value键值对保存 2.持久化 3.服务器关机了还能保存 4.支持几种数据类型 5.单线程 6.一共有16个数据库(索引为0-15,db0-db15) 7.默认端口:6379
二、String和key常用命令
1.切换redis中的数据库:
切换到1数据库:select 0 切换到16数据库:select 15
2.查询数据库中key的数量
DBSIZE
3.查询数据库中的所有key
keys *
4.查询key以什么开头的所有key
查询所有以k开头的所有key:keys k?
5.清除当前库中的所有key
FLUSHDB
6.清除所有库中的所有key
FLUSHALL
7.判断某个key是否存在,存在返回1,不存在返回0
exists key的名字 存在返回1,不存在返回0
8.将某个key移到某个库
例如:将k1移到2号库 move k1 1
9.给指定的key设置过期时间:前提是该key已经添加到redis中了:说明:一旦key过期,redis便自动将其从内存中移除出去
expire key名称 秒钟 不设置表示永不过期
eg:expire k1 10表示给k1设置10秒过期时间
10.查询指定key还有多少秒过期
ttl key名称 返回-1表示永不过期,-2表示已过期
11.删除key
DEL key名称 eg:DEL k1
12.向库中添加数据:如果该key已经存在,则会覆盖原来的内容
set k1 v1之后 再执行set k1 v2 这时再用get k1取出来的数据就为v2
13.向数据库中添加数据的时候加上过期时间
setex key名称 有效时间秒数 值 eg:setex k5 10 v5 意思就是将k5加入到数据库中有效期为10秒,值为v5
14.向数据库中添加数据,如果key已经存在则不添加并且返回0,如果key不存在则key添加返回1
setnx key名称
15.批量向redis中添加key,value
mset k1 v1 k2 v2 k3 v3 :会覆盖
msetnx k1 v1 k5 v5 :如果这里面有一个key存在则其他的也不会添加
16.批量根据key获得value
mget k1 k2 k3
17.查看key的数据类型
type key名称
redis命令大全:http://www.redis.cn/commands.html
三、List常用命令:
1.添加数据
LPUSH list01 1 2 3 4 5 从左边添加数据
RPUSH list02 1 2 3 4 5 从右边添加数据
2.获取数据:这个只是获取数据并不会移除掉当前数据
lrange key名称 0 -1 表示取出这个key的全部数据,从左边取
3.取出一个数据:每次只会取出一个数据,这个不仅会获取数据并且还会将该数据从集合中移除掉
lpop list名称 :lpop list01 取出list01中的第一个数据 rpop list名称 :rpop list01 取出list01中的最后一个数据
4.按照索引下表获得元素(从上到下),只是获取并不会删除:索引从0开始
lindex list名称 索引编号 lindex list 01 1
5.删除N个value
lrem list名称 N value 表示从list集合中删除N个value
6.从源列表左边取出数据放到目标列表右边添加
rpoplpush 源列表 目标列表
7.将某个索引的key换成另一个
lset key index value eg:lset list01 1 x将list01集合的第二个值换成1
8.在某个值前面加个值
linsert key before/after 已保存值 将要保存的值 linsett list01 before x java 在list01中x值的前面加个索引值为java
9.说明:如果这个list集合中的所有值都为空了,则这个list的key也就消失了
四、Set常用命令:(无序无重复)
1.加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略.如果集合key 不存在,则新建集合key,并添加member元素到集合key中.
如果key 的类型不是集合则返回错误.
SADD
redis> SADD myset "Hello" (integer) 1 redis> SADD myset "World" (integer) 1 redis> SADD myset "World" (integer) 0 redis> SMEMBERS myset 1) "World" 2) "Hello" redis>
2.返回key集合所有的元素.该命令的作用与使用一个参数的SINTER 命令作用相同.
SMEMBERS
redis> SADD myset "Hello" (integer) 1 redis> SADD myset "World" (integer) 1 redis> SMEMBERS myset 1) "World" 2) "Hello" redis>
3.返回集合存储的key的基数 (集合元素的数量).
SCARD
redis> SADD myset "Hello" (integer) 1 redis> SADD myset "World" (integer) 1 redis> SCARD myset (integer) 2 redis>
4.仅提供key参数,那么随机返回key集合中的一个元素
SRANDMEMBER
redis> SADD myset one two three (integer) 3 redis> SRANDMEMBER myset "one" redis> SRANDMEMBER myset 2 1) "three" 2) "one" redis> SRANDMEMBER myset -5 1) "one" 2) "one" 3) "one" 4) "one" 5) "one" redis>
5.移动集合里面的一个元素到另一个集合
SMOVE
redis> SADD myset "one" (integer) 1 redis> SADD myset "two" (integer) 1 redis> SADD myotherset "three" (integer) 1 redis> SMOVE myset myotherset "two" (integer) 1 redis> SMEMBERS myset 1) "one" redis> SMEMBERS myotherset 1) "three" 2) "two" redis>
6.返回一个集合与给定集合的差集的元素.(在第一个集合里面不在第二个集合里面)
SDIFF
假如: key1 = {a,b,c,d} key2 = {c} key3 = {a,c,e} SDIFF key1 key2 key3 = {b,d} 举例: redis> SADD key1 "a" (integer) 1 redis> SADD key1 "b" (integer) 1 redis> SADD key1 "c" (integer) 1 redis> SADD key2 "c" (integer) 1 redis> SADD key2 "d" (integer) 1 redis> SADD key2 "e" (integer) 1 redis> SDIFF key1 key2 1) "a" 2) "b" redis>
7.获取两个集合的交集
SINTER
key1 = {a,b,c,d} key2 = {c} key3 = {a,c,e} SINTER key1 key2 key3 = {c} redis> SADD key1 "a" (integer) 1 redis> SADD key1 "b" (integer) 1 redis> SADD key1 "c" (integer) 1 redis> SADD key2 "c" (integer) 1 redis> SADD key2 "d" (integer) 1 redis> SADD key2 "e" (integer) 1 redis> SINTER key1 key2 1) "c" redis>
8.获取两个集合的并集
SUNION
key1 = {a,b,c,d} key2 = {c} key3 = {a,c,e} SUNION key1 key2 key3 = {a,b,c,d,e} redis> SADD key1 "a" (integer) 1 redis> SADD key1 "b" (integer) 1 redis> SADD key1 "c" (integer) 1 redis> SADD key2 "c" (integer) 1 redis> SADD key2 "d" (integer) 1 redis> SADD key2 "e" (integer) 1 redis> SUNION key1 key2 1) "a" 2) "b" 3) "c" 4) "d" 5) "e" redis>
五、哈希常用命令:K,V模式不变,但V是一个键值对
1.设置 key 指定的哈希集中指定字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段在哈希集中存在,它将被重写。
HSET
redis> HSET myhash field1 "Hello" (integer) 1 redis> HGET myhash field1 "Hello" redis>
2.返回 key 指定的哈希集中该字段所关联的值
HGET
redis> HSET myhash field1 "foo" (integer) 1 redis> HGET myhash field1 "foo" redis> HGET myhash field2 (nil) redis>
3.设置 key
指定的哈希集中指定字段的值。该命令将重写所有在哈希集中存在的字段。如果 key
指定的哈希集不存在,会创建一个新的哈希集并与 key
关联
HMSET
redis> HMSET myhash field1 "Hello" field2 "World" OK redis> HGET myhash field1 "Hello" redis> HGET myhash field2 "World" redis>
4.返回 key
指定的哈希集中指定字段的值。对于哈希集中不存在的每个字段,返回 nil
值。因为不存在的keys被认为是一个空的哈希集,对一个不存在的 key
执行 HMGET 将返回一个只含有 nil
值的列表
HMGET
redis> HSET myhash field1 "Hello" (integer) 1 redis> HSET myhash field2 "World" (integer) 1 redis> HMGET myhash field1 field2 nofield 1) "Hello" 2) "World" 3) (nil) redis>
5.返回 key 指定的哈希集中所有的字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍
HGETALL
redis> HSET myhash field1 "Hello" (integer) 1 redis> HSET myhash field2 "World" (integer) 1 redis> HGETALL myhash 1) "field1" 2) "Hello" 3) "field2" 4) "World" redis>
6.从 key 指定的哈希集中移除指定的域。在哈希集中不存在的域将被忽略。如果 key 指定的哈希集不存在,它将被认为是一个空的哈希集,该命令将返回0。
HDEL
redis> HSET myhash field1 "foo" (integer) 1 redis> HDEL myhash field1 (integer) 1 redis> HDEL myhash field2 (integer) 0 redis>
7.返回 key 指定的哈希集中所有字段的名字
HKEYS
redis> HSET myhash field1 "Hello" (integer) 1 redis> HSET myhash field2 "World" (integer) 1 redis> HKEYS myhash 1) "field1" 2) "field2" redis>
8.返回 key 指定的哈希集中所有字段的值。
HVALS
redis> HSET myhash field1 "Hello" (integer) 1 redis> HSET myhash field2 "World" (integer) 1 redis> HVALS myhash 1) "Hello" 2) "World" redis>
9.只在 key
指定的哈希集中不存在指定的字段时,设置字段的值。如果 key
指定的哈希集不存在,会创建一个新的哈希集并与 key
关联。如果字段已存在,该操作无效果。
HSETNX
redis> HSETNX myhash field "Hello" (integer) 1 redis> HSETNX myhash field "World" (integer) 0 redis> HGET myhash field "Hello" redis>
六、ZSet常用命令:有序集合(在set的基础上加了score值,之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2)
1.添加
ZADD
redis> ZADD myzset 1 "one" (integer) 1 redis> ZADD myzset 1 "uno" (integer) 1 redis> ZADD myzset 2 "two" 3 "three" (integer) 2 redis> ZRANGE myzset 0 -1 WITHSCORES 1) "one" 2) "1" 3) "uno" 4) "1" 5) "two" 6) "2" 7) "three" 8) "3" redis>
2.获取值 ZRANGE key start stop [WITHSCORES]
ZADD myzset 1 "one" ZADD myzset 2 "two" ZADD myzset 3 "three" ZRANGE myzset 0 -1 ZRANGE myzset 2 3 ZRANGE myzset -2 -1
六、reids的五大数据类型
1.String(字符串):一个key对应一个value 2.Hash(类似java里的map) 3.List(列表) 4.Set(集合):无序无重复 5.Zset(sorted set 有序集合)