Redis的相关命令

 2023-09-15 阅读 27 评论 0

摘要:最近在学习redis,学习的初衷是做一个分布式的Python爬虫,需要用到redis和scrapy结合,现在才刚刚入门,学习redis相关命令,记录下来。 之前学习过Mysql之类的关系型数据库,初次接触Nosql,需要记的东西比较多。 打开redis服务r

最近在学习redis,学习的初衷是做一个分布式的Python爬虫,需要用到redis和scrapy结合,现在才刚刚入门,学习redis相关命令,记录下来。


之前学习过Mysql之类的关系型数据库,初次接触Nosql,需要记的东西比较多。

打开redis服务redis-server /opt/redis/redis.conf(我的配置文件单独放在opt/redis目录下),选择6379端口,redis-cli -p 6379
首先是插入命令,比较一下Mysql,insert 语句,redis只需要set name king,redis是键值对的组合,所以不能与Mysql进行比较,上面的代码段意思是键name 的值为 ‘king’,DEL name删除键name。

Redis 命令、如果要取出值,get name,遍历的话,keys *类似于Mysql 中select *from xxx

redis自带16个数据库,想要切换到哪个数据库select 数字,比如 select 1,切换到1号数据库,不过起始是从0开始的,FLUSHALL清空所有的数据库(16个数据库),FLUSHDB清空本数据库。

其次是,对数据的操作,TYPE name命令显示键值的类型,STRLEN name显示键所对应值的长度,还有增加减少键值(只能针对整数操作):

set m 1
INCR m  //m=2  increase
INCR m  // m=3
DECR m  // m=2 decrease
DECR m  // m=1
INCRBY m 5  // m=6  每次增加5
DECRBY m 5  // m=1  每次减少5  m后面的数字必须是正整数
APPEND m 2  
get m  //结果是  '12' 追加到后面
APPEND m 123456
get m // 12123456
GETRANGE m 0 3  //得到一个范围,类似于Python里面的range(),结果是 1212
SETRANGE m 0 xxx  //范围赋值加覆盖 ,得到的结果是 xxx23456
SETRANGE m 7 xxx  // xxx2345xxx

chown命令?设置键存在的时间:

setex m 20 king  //设置m的值为"king",存在的时间为20s,20s后m键不存在
setnx m qq  //如果之前m存在,则m ='qq'这个设值失败,返回0,反之成功,返回1
ttl m   可以查看m存在剩余的时间,如果为-1。则是永久 time to leave 的缩写

设置多个键值对

mset m1 v1 m2 v2 m3 v3   // m1='v1' ,m2='v2', m3='v3'   mget = more get 
mget m1 m2 m3    // v1 ,v2 ,v3
msetnx m4 v4 m3 v3  // m4不存在,而m3存在,则失败,一荣俱荣,一辱俱辱,要么一起赋值成功,要么都失败

List数据类型

LPUSH list1 1 2 3 4 5
LRANGE list1 0 -1  // 结果是 54321 ,原因可以解释为从左边开始把列表压入栈中,出来当然相反
RRUSH list2 1 2 3 4 5  //结果是 12345 ,原因如上,从右边压入
LINDEX LIST1 0   //结果是5,索引是从栈顶开始数
LREM list2 1 3   //从list2列表中移除一个3,前面一个是移除值的个数,后面一个是值,意思是就是移除一个3
LTRIM  //截取数据
LPUSH list5 1 2 3 4 5
LTRIM list5 0 2   //截取从0下标到2,从栈顶开始数
LRANGE list5 0 -1 // 结果是5 4 3
LINSERT list5 BEFORE 5 'python'   //在5的前面插入python
LINSERT list5 AFTER 'python' 'JAVA'  //在python后面插入JAVA

Set类型

//添加元素
sadd set1 1 1 2 3 3 4
sadd set2 1 2 a s d f
SMEMBERS set1   //结果 1 2 3 4,去掉重复的类型,遍历
SISMEMBER set1 x //判断x是否在set1里面,返回0|1
SCARD set1  //获取set1里面的元素个数
SREM set1 2  //删除set1里面的值为2的元素
SRANDMEMBER set1 1  //从set1中随机抽取一个元素,后面的参数是随机抽取的个数
SPOP set1   //从set1中随机出栈
SMOVE set1 set2 1  //把1set1中移到set2中
SDIFF set1 set2    //在第一个set1里面,不再第二个set2里面的元素 3 4
SINTER set1 set2  //两个set里面共有的元素,1 2
SUNION set1 set2  //两个set的并集 1 2 3 4 a s d f

linux最常用命令,Hash类型

//同样也是key-value对,不同的是 value = 键值对,这种比喻类似于二维数组,一维数组里面的一维数组
hset user id 1504
hget user id   //结果1504
hmset user id 1504 name marktwin gender male
hmget user id name gender  //结果1504 marktwin male,用法类似于上面的mset mget
hgetall user   //把键值对都打印出来
hdel user age  //删除age
hlen user      //user的键值对个数
hexists user id   //判断有无id这个键,返回 0|1
hkeys user      //列出所有的键
hvals user      //列出所有的值
hincrby user id 2  //id+2  HINCRBYFLOAT 增加浮点数
hsetnx user id 150409  //返回0|1 用法和setnx一样

Zset(sorted set)类型

zadd zset 60 v1 70 v2 78 v3 90 v4   //键值对set,前面是分数,后面是值
ZRANGE zset 0 -1  //  
1) "v1"
2) "v2"
3) "v3"
4) "v4
ZRANGE zset 0 -1 withscores  //包括分数一起打印
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "78"
7) "v4"
8) "90"
ZRANGEBYSCORE zset 60 80  //分数是60~80之间的  60<= score <=80
1) "v1"
2) "v2"
3) "v3"
ZRANGEBYSCORE zset (60 (80  //60<score<80  不包含
zrem zset v1  //删除
zcount zset 60 80  //统计60~80之间的个数
zrank zset v  //取出下标
zscore v4    //去除v4对应的分数

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/62090.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息