Redis基础(2)-一篇文章基本了解redis中各种类型所使用的指令

1. Linux中开启以及关闭客户端

  1. 使用指令redis-cli -h IP地址 -p 端口号
  2. 也可以使用指令redis-cli shutdown关闭服务端;

2. redis基础知识

  1. 在redis中,默认是有16个数据库,类似于数组从0开始,而且不同库之间的数据查询是不互通的,存于第一个数据库0的数据,在数据库1中是搜索不到的
  2. 统一密码管理,要么都可以连接,要么都不能连接;
  3. redis是单线程加上多路IO复用;什么叫做多路复用,简单的学习了一下,就是指在使用单线程的情况下,可以通过一种Reactor的模式来实现文件事务处理器,也就是对网络请求进行监听;除此之外,redis一般使用epoll模式,也就是请求次数无限制,而且处理请求也很快,详细可以去看其它的博客介绍;
2.1 Redis的5大数据类型
1. string

String是Redis中的基本类型,表示一个key对应一个value;而且String类型是二进制安全的,意味着redis的String可以包含任何数据;一个redis中字符串value可以最多包含512M
处理String类型的一些指令:

  1. set <key> <value>:通过键存入值;
  2. get <key>:通过键获得值;
  3. append <key> <value>:在某个String后面直接添加String,类似于Java中StringBuffer中的append方法;
  4. strlen <key>:判断值的长度;
  5. setnx <key> <value>:当key值不存在时才会创建,如果key值存在则不创建;
  6. incr <key>:只是对数字类型的value生效,也就是String里面是数字,否则报错,用处就是使得数字加1;如果为空也加1(既不存在就会加1;如没有a这个键,但是incr a,则a=1;)
  7. decr <key>:对数字类型的value进行和上面的incr指令一样,如果值为空,那么新增值为-1,也就是说不管键存不存在都会-1;
  8. incrby | decrby <key> <步长>:将key中存储的数字值按自定义增减;
  9. mset | mget | msetnx:和前面的set,get,setnx类似,唯一的区别是这三个指令可以同时操作多个key,最后一msetnx只有当所有的key都不存在时才能实现;
  10. setex <key> <过期时间> <value>:设置过期时间的同时设置键值对;
  11. getset <key> <value>:设置新值的同时获得旧值;

如果键过期就会自动删除该键值对;


2. List类型

第一点就是单键多值(因为list中本身可能就有很多的值,然后只需要一个键来确定);底层是双向链表,对两端操作性能很高,如果通过索引操作中间节点,可能效果会很差;
处理List类型的一些指令:

  1. lpush | rpush <key> <value1> <value2>:从左边插入值或者从右边插入值;
  2. lpop | rpop <key>:从左边或者右边出值;只需要记住这是一个双向链表,具体如下使用这两个指令;
  3. lrange <key> <start> <stop>:查找键中的值,从start开始到stop(都是数值),如果start=0,stop= -1,则代表查询所有的值;(从右到左是从-1开始,从左到右是从0开始)
  4. lindex <key> <index>:按照索引下标获得元素;
  5. llen <key>:获得list的长度;
  6. linsert <key> (before | after ) <value> <newvalue>:其中写before时代表在value前插入newvalue,如果使用after则刚好相反;
  7. lrem <key> <n> <value>:从左边删除n个value(从左到右),这种情况下意味着你已经知道了它的值,所以可以直接通过值进行删除;注意点:n可以是负数,因为如果n是负数的时候,它就默认是从右边开始删除;-只是代表方向,这样理解就没有问题了;如果n=0则代表删除所有;

3. set类型

redis中set类型是不允许元素重复,属于一个无序的String类型的集合;和Java中的类似,底层也是一个value为空的hash表,就像是一个java中的map键不能重复;
在set中的常用命令:

  1. sadd <key> <value> <value>:放入多个不重复的元素;

  2. smembers <key>:取出该集合的所有值;

  3. sismember <key> <value>:判断set中是否含有这个value值;

  4. scard <key>:返回该集合中的元素个数;

  5. srem <key> <value> <value>:删除集合中的某个或某些元素;

  6. spop <key>:随机从该集合中取出一个值;

  7. srandmember <key> <n>:随机从集合中取n个值,不会从集合中删除;

  8. sinter <key1> <key2>:返回两个集合的交集;

  9. sunion <key1> <key2>:返回两个元素的并集;

  10. sdiff <key1> <key2>:返回两个元素的差集; 这个差集就是key1集合减去key1和key2两个元素的交集;


4. hash类型

hash与前面的一样,也属于一个键值对集合,是一个String类型的field和value的映射表,适合存储对象,类似于Java中的Map<String,String>;
在hash类型中常用的命令:

  1. hset <key> <field> <value>:给key集合中的field键赋值,所以说hash就像是Java中的Map;
  2. hget <key> <field>:通过key集合中的field键取值;
  3. hmset <key> <field1> <value1> <field2> <field2> | hmget <key> <field>:反正记住一般情况下,redis里面带有m的指令,一般都代表more的意思,也就是进行多条数据处理;
  4. hexists <key> <field>:查hash表中key是否存在field键;
  5. hkeys <key>:列出所有的field;
  6. hvals <key>:列出所有该key集合中所有的value;
  7. hincrby <key> <field> <increment>:表明对field中的值进行增加,这个里面没有减法,但是可以加个负数;

注意点:在redis中存储中文时会导致编码好像不对,比如:

然后这个时候为了让它按照放入的时候显示,可以使用redis-cli --raw这样就可以显示正确了;


5. zset类型

zset类型与set类似也是一种没有重复元素的字符串集合;但是它是一个有序集合,且每个有序集合都关联了一个评分(score),这个评分被用来按照从最低分到最高分的排序集合中的成员;除此之外,集合中的评分可能重复;
在zset中的常用指令:

  1. zadd key [NX|XX] [CH] [INCR] score member [score member ...]:表示添加key的时候后面先放分数,再放成员;
  2. zrange <key> <start><stop>:查询所有的元素;
  3. zrangebyscore <key> <start> <stop>:通过分数的范围查找;
  4. zincrby <key> <increment> <value>:为元素的score上加增量;
  5. zrem <key> <value>:删除该集合下指定的元素;
  6. zcount <key> <min> <max>:统计该分数区间元素的个数;
  7. zrank <key> <value>:返回该元素再集合中的排名,从0开始;

2.2 Redis常用的命令
  1. keys *:查询当前的所有键;
  2. exists <key>:查询某个键是否存在;
  3. type <key>:查看当前键的类型;
  4. del <key>:删除某个键;
  5. expire <key> <seconds>:用于设置键的过期时间,以秒为单位;
  6. ttl <key>:用来查看键是否过期,过期返回-2,否则返回还剩多长时间过期,还有一个特殊值是-1,表示永不过期;
  7. dbsize:返回当前redis所在库的key值数目;
  8. flushdb:清除当前库的所有键值对;
  9. flushall:清查全部库中的数据;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神秘的天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值