String是Redis中的基本类型,表示一个key对应一个value;而且String类型是二进制安全的,意味着redis的String可以包含任何数据;一个redis中字符串value可以最多包含512M; 处理String类型的一些指令:
set <key> <value>:通过键存入值;get <key>:通过键获得值;append <key> <value>:在某个String后面直接添加String,类似于Java中StringBuffer中的append方法;strlen <key>:判断值的长度;setnx <key> <value>:当key值不存在时才会创建,如果key值存在则不创建;incr <key>:只是对数字类型的value生效,也就是String里面是数字,否则报错,用处就是使得数字加1;如果为空也加1(既不存在就会加1;如没有a这个键,但是incr a,则a=1;)decr <key>:对数字类型的value进行和上面的incr指令一样,如果值为空,那么新增值为-1,也就是说不管键存不存在都会-1;incrby | decrby <key> <步长>:将key中存储的数字值按自定义增减;mset | mget | msetnx:和前面的set,get,setnx类似,唯一的区别是这三个指令可以同时操作多个key,最后一msetnx只有当所有的key都不存在时才能实现;setex <key> <过期时间> <value>:设置过期时间的同时设置键值对;getset <key> <value>:设置新值的同时获得旧值;如果键过期就会自动删除该键值对;
第一点就是单键多值(因为list中本身可能就有很多的值,然后只需要一个键来确定);底层是双向链表,对两端操作性能很高,如果通过索引操作中间节点,可能效果会很差; 处理List类型的一些指令:
lpush | rpush <key> <value1> <value2>:从左边插入值或者从右边插入值;lpop | rpop <key>:从左边或者右边出值;只需要记住这是一个双向链表,具体如下使用这两个指令; lrange <key> <start> <stop>:查找键中的值,从start开始到stop(都是数值),如果start=0,stop= -1,则代表查询所有的值;(从右到左是从-1开始,从左到右是从0开始)lindex <key> <index>:按照索引下标获得元素;llen <key>:获得list的长度;linsert <key> (before | after ) <value> <newvalue>:其中写before时代表在value前插入newvalue,如果使用after则刚好相反;lrem <key> <n> <value>:从左边删除n个value(从左到右),这种情况下意味着你已经知道了它的值,所以可以直接通过值进行删除;注意点:n可以是负数,因为如果n是负数的时候,它就默认是从右边开始删除;-只是代表方向,这样理解就没有问题了;如果n=0则代表删除所有;redis中set类型是不允许元素重复,属于一个无序的String类型的集合;和Java中的类似,底层也是一个value为空的hash表,就像是一个java中的map键不能重复; 在set中的常用命令:
sadd <key> <value> <value>:放入多个不重复的元素;
smembers <key>:取出该集合的所有值;
sismember <key> <value>:判断set中是否含有这个value值;
scard <key>:返回该集合中的元素个数;
srem <key> <value> <value>:删除集合中的某个或某些元素;
spop <key>:随机从该集合中取出一个值;
srandmember <key> <n>:随机从集合中取n个值,不会从集合中删除;
sinter <key1> <key2>:返回两个集合的交集;
sunion <key1> <key2>:返回两个元素的并集;
sdiff <key1> <key2>:返回两个元素的差集; 这个差集就是key1集合减去key1和key2两个元素的交集;
hash与前面的一样,也属于一个键值对集合,是一个String类型的field和value的映射表,适合存储对象,类似于Java中的Map<String,String>; 在hash类型中常用的命令:
hset <key> <field> <value>:给key集合中的field键赋值,所以说hash就像是Java中的Map;hget <key> <field>:通过key集合中的field键取值; hmset <key> <field1> <value1> <field2> <field2> | hmget <key> <field>:反正记住一般情况下,redis里面带有m的指令,一般都代表more的意思,也就是进行多条数据处理;hexists <key> <field>:查hash表中key是否存在field键;hkeys <key>:列出所有的field;hvals <key>:列出所有该key集合中所有的value;hincrby <key> <field> <increment>:表明对field中的值进行增加,这个里面没有减法,但是可以加个负数;注意点:在redis中存储中文时会导致编码好像不对,比如: 然后这个时候为了让它按照放入的时候显示,可以使用redis-cli --raw这样就可以显示正确了;
zset类型与set类似也是一种没有重复元素的字符串集合;但是它是一个有序集合,且每个有序集合都关联了一个评分(score),这个评分被用来按照从最低分到最高分的排序集合中的成员;除此之外,集合中的评分可能重复; 在zset中的常用指令:
zadd key [NX|XX] [CH] [INCR] score member [score member ...]:表示添加key的时候后面先放分数,再放成员;zrange <key> <start><stop>:查询所有的元素; zrangebyscore <key> <start> <stop>:通过分数的范围查找;zincrby <key> <increment> <value>:为元素的score上加增量;zrem <key> <value>:删除该集合下指定的元素;zcount <key> <min> <max>:统计该分数区间元素的个数;zrank <key> <value>:返回该元素再集合中的排名,从0开始;