1. redis的五大数据类型
- String(字符串): String 是redis最基本的数据类型,一个key对应一个value;String是二进制安全的;’redis的String可以包含任何的数据(jpg图像和序列化的对象等都可以包含);注意:一个redis中的字符串value最多可以存512M
- Hash(哈希,类似Map): redis hash是一个键值对集合;是一个String类型的field和value的映射表 ,hash适合用于存储对象;类似Java里面的Map<String,Object>
- List(列表): redis列表是简单的字符串列表,按照插入的顺序排序,可以添加一个元素到列表的头或者尾(注意:列表的底层是链表)
- Set(集合): Set是String类型的无序无重复的集合。他是通过HashTable实现的。
- Zset(sorted set: 有序集合): 和Set一样无重复集合,不同的是每个元素都会关联一个double类型的分数score;redis正式通过分数为集合中的成员进行从小到大的排序。Zset的成员是唯一的,但score却是可以重复的。
2. redis键(key)
-
keys *: 列出所有的key -
exists key: 判断某个key是否存在 -
move key db:将某个key移动到某个库去,例如move hello 7将key为hello的这个key 移动到第8号库。 -
expire key 秒钟:为给定的key设置过期时间 -
ttl key:查看还有多少秒过期(-1表示永不过期,-2表示已过期) -
type key:查看key是什么类型 -
del key:删除key
3. redis字符串(String:单值单value)
-
set key value:设置key;
get key:获取key;
del key: 删除key;
append key value: 追加;
strlen key: 获取key的长度 -
incr key:值为数字的value+1;
decr key:值为数字的value-1;
incrby key 增长值:值为数字的value+增长值;
decrby key 增长值:值为数字的value-增长值;
注意:如果value不是数字,那么执行这四个命令将报错 - getrange:获取指定区间的字符串;如
getrange key 0 -1: 表示获取key对应的value与get key一样,getrange key 0 3则是获取这个key对应的value的0-3个字符,包括第三个,也就是说输出的是4个字符;
setrange: 用来替换字符;如setrange key 0 111: 表示从0个位置开始替换value的值,替换前三个为111。如果此key的value是qwert,那么执行了setrange key 0 111命令以后value就变成了 111rt。 -
setex key 秒 value: 设置key的同时为其设置过期时间;如setex abc 10 sssss设置key为abc,value为sssss的数据过期时间为10秒钟
setnx key value: 如果key不存在则插入key和value,如果key存在则不进行插入,防止覆盖 -
mset key1 value1 key2 value2 key3 value3 ...批量设置key和value的值
mget key1 key2 key3...批量获取key的值
msetnx key1 value1 key2 value2 key3 value3 ...如果有一个key已经存在,那么这个命令将不会把数据插进去,如果key都不存在才会把所有的都插进去。
4. redis列表(List :单值多value)
lpush key value1 value2 value3 ... valuen从左边添加(先进后出)
rpush key value1 value2 value3 ... valuen从右边添加(先进先出)
lrange key 0 -1将key所有的value都列出,如果是lpush的,列出的顺序应该是valuen ... value3 value2 value1;如果是rpush 的,列出的顺序将是:value1 value2 value3 ... valuenlpop key:取栈顶的元素出栈
rpop key:取栈底的元素出栈lindex key 下标:按照索引的下标获取元素,从上往下获取的llen key:获取这个key的value的长度-
lrem key n个 value:删除list中的n个value;如lrem list1 3 ttt就是将list1中value为ttt的删除掉3个。如下图:lrem.png -
ltrime key 起始值 终止值:将key中的value从起始值开始,到终止值结束截取出来重新赋值给key;如下图:ltrime.png -
rpoplpush 源list 目的list将源list的栈底元素移动到目的list的栈顶中去,如下图:rpoplpush .png lset key index value给index位置的值重新赋值为valuelinsert key before/after value 值:在value前面或者后面插入一个值
5. redis集合(Set:单值多value)
-
sadd key value1 value2 value3 ... valuen新增set集合(重复的数据会过滤掉)
smembers key查看所有的value
sismember key value: 在key这个集合中是否存在value这个值 -
scard key: 获取集合里面的元素个数 -
srem key value: 删除集合中的某个value -
srandmember key :整数n:在key这个集合中随机的出n个value(用来抽奖) -
spop key:随机出栈 -
smove key1 key2 key1里面的某个值:将key1里面的某个值移到key2中去 -
sdiff key1 key2: 获取key1和key2 的差集(在key1中并且不在key2中的值) -
sinter key1 key2: 获取key1和key2的交集(在key1中并且又在key2中的值) -
sunion key1 key2: 获取key1和key2的并集(在key1中或者在key2中的值)
6. redis哈希(hash:KV模式不变,但是V是一个键值对《重要》)
-
hset key field value;:新增key下面的field下的value值
hget key field:获取key下面的field的值
hmset key field value [file value ....]:批量新增key下面的field的值
hmget key field [field ...]: 批量获取多个key
hgetall key:获取key下面的所有值
hdel key field [field ...]:删除key下面的field,可以删除多个;如下图:set1.png -
hlen key获取这个这个key有多少个属性 -
hexists key field: 判断这个field是否在这个key里面 -
hkeys key:列出key下的所有field -
hvals key:列出key下所有的value -
hincrby key field 整数n:给field的value增加n(只能给整数递增) -
hincrbyfloat key field 小数n:给field的value增加小数n(只能给小数增加) -
hsetnx key field value: 给key增加一个不存在的field,如果存在此field,将不能新增,可以防止覆盖
7. redis有序集合Zset(sorted set:在set的基础上加了一个score值)
-
zadd key score value[score value]: 新增一个zset集合,score是排序的值 -
zrange key 0 -1: 查询所有的value值 -
zrange key 0 -1 withscores: 查询所有value并且携带score -
zrangebyscore key min max: 查询score在min 和max之间的所有value,包含min和max -
zrangebyscore key (min (max加了'('这个符号后,就是不包含 -
zrangebyscore key min max limit offset count:表示score在min和max之前的并且从offset开始查询count条,limit相当于mysql的分页 -
zrem key value:删除value这个元素 -
zcard key: 统计value的个数 -
zcount key min max:统计在min-max区间的个数 -
zrank key value: 获得value的下标值 -
zscore key value: 获得value的score值 -
zrevrank key value: 逆序获得下标值 -
zrevrange key 0 -1:逆序输出所有的value -
zrevrangebyscore key max min:获取min-max区间的所有value并倒序输出
如下图所示:zset1.pngzset2.png






