Redis介绍与使用 redis使用技巧
wptr33 2024-12-18 17:33 42 浏览
一.使用
1.启动:
redis-server2.连接(A连接B电脑):
(1)远程连接:
redis-cli -h 127.0.0.1 -p 6379(2)本地连接:
redis-cli3.判断连接是否正常
输入PING(规范是大写,但小写也可以),如果出来的是PONG,则连接正常。
4.Redis中有十六个数据库,名称是从0到15。我们每次进入的都是零号库,我们可以通过命令来进入其他库。
(1)进入其他库(select)
127.0.0.1:6379> SELECT 3
OK二.基本命令
1.设置键和值
(1)设置键和值(set)
127.0.0.1:6379> set sum 1
OK(2)设置多个键和值(mset)
127.0.0.1:6379> mset num1 111 num2 222
OK(3)得到键的值(get)
127.0.0.1:6379> get sum
"1"(4)得到多个键的值(mget)
127.0.0.1:6379> mget num1 num2
1) "num2"
2) "222"(5)得到所有键(keys *)
127.0.0.1:6379> keys *
1) "num1"
2) "num2"
3) "sum"(6)查询(keys )
127.0.0.1:6379> keys num?
1) "num1"
2) "num2"(7)判断是否存在(exists)
1 代表存在,0 代表不存在
127.0.0.1:6379> exists sum
(integer) 1
127.0.0.1:6379> exists sum3
(integer) 0(8)重命名(rename)
127.0.0.1:6379> rename sum num3
OK(9)过期时间/验证码( expire)
127.0.0.1:6379> expire num3 20
(integer) 1(10)查询过期时间还有几秒(ttl)
127.0.0.1:6379> ttl num3
(integer) 11
127.0.0.1:6379> ttl num3
(integer) 8
127.0.0.1:6379> ttl num3
(integer) 6
127.0.0.1:6379> ttl num3
(integer) 3
127.0.0.1:6379> ttl num3
(integer) 1
127.0.0.1:6379> ttl num3
(integer) -2(-1 表示永久,-2 表示已经过期,num3 就不存在了)
(11)在创建时设置过期时间(ex)
127.0.0.1:6379> set num3 333 ex 60
OK(12)将元素过期时间内设置为永久的(persist)
127.0.0.1:6379> expire num1 60
(integer) 1
127.0.0.1:6379> persist num1
(integer) 1
127.0.0.1:6379> ttl num1
(integer) -1(persist 是将元素设置为永久,-1 表示永久)
(13)查看类型(type)
127.0.0.1:6379> set num3 333
OK
127.0.0.1:6379> type num3
string(string 表示字符串)
(14)删除(del)
127.0.0.1:6379> del num3
(integer) 1(15)删除指定元素
redis 暂时不支持删除指定元素,所以我们会返回终端,进行索引查找出后进行删除。
(py3env) bd@DF:~$ redis-cli keys 'num?' | xargs redis-cli del
(integer) 2(16)清空所有数据库(flushall)
127.0.0.1:6379[1]> flushall
OK三.数据类型
1.字符串
(1)追加(append)
127.0.0.1:6379> get num1
"1"
127.0.0.1:6379> append num1 2
(integer) 2
127.0.0.1:6379> get num1
"12"(2)加(incrby)
127.0.0.1:6379> get num1
"12"
127.0.0.1:6379> incrby num1 10
(integer) 22
127.0.0.1:6379> get num1
"22"(3)减(decrby)
127.0.0.1:6379> decrby num1 12
(integer) 10
127.0.0.1:6379> get num1
"10"2.列表
(1)栈(lpush)
栈 就表示数字从左边进入一个管道,如果先添加 3,再添加 2 ,最后添加 1 ,那么先出来的一定是 1 ,之后是 2 ,再是 3 。
127.0.0.1:6379> lpush li 6 5 4
(integer) 3
127.0.0.1:6379> lrange li 0 2
1) "4"
2) "5"
3) "6"(2)队列(rpush)
队列则表示数字从右边进入管道,如果先添加 5 ,再添加 6 ,那么先出来的是 6 ,后是 5 。
127.0.0.1:6379> rpush li 2 1
(integer) 5(3)查询(lrange)
查询时必须跟上索引值,查询全部可用 0 -1 。
127.0.0.1:6379> lrange li 0 -1
1) "4"
2) "5"
3) "6"
4) "2"
5) "1"(5)长度(llen)
127.0.0.1:6379> lrange li 0 -1
1) "4"
2) "5"
3) "6"
4) "2"
5) "1"
127.0.0.1:6379> llen li
(integer) 5(6)索引(lindex)
127.0.0.1:6379> lindex li 3
"2"(7)左删除(lpop)
127.0.0.1:6379> lpop li
"4"(8)右删除(rpop)
127.0.0.1:6379> rpop li
"1"127.0.0.1:6379> lrange li 0 -1
1) "5"
2) "6"
3) "2"(9)移除多个元素(lrem)
127.0.0.1:6379> lrange li 0 -1
1) "a"
2) "a"
3) "a"
4) "a"
5) "5"
6) "6"
7) "a"
8) "a"
9) "a"
10) "a"左移除数值为正(移除两个 a ):
127.0.0.1:6379> lrem li 2 a
(integer) 2
127.0.0.1:6379> lrange li 0 -1
1) "a"
2) "a"
3) "5"
4) "6"
5) "a"
6) "a"
7) "a"
8) "a"右移除数值为负(移除两个 a ):
127.0.0.1:6379> lrem li -2 a
(integer) 2
127.0.0.1:6379> lrange li 0 -1
1) "a"
2) "a"
3) "5"
4) "6"
5) "a"
6) "a"移除所有数值为 0
127.0.0.1:6379> lrem li 0 a
(integer) 4127.0.0.1:6379> lrange li 0 -1
1) "5"
2) "6"3.哈希类型(hash)
我们现在已经知道Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多232?1个字段。
(1)设置(hset)
127.0.0.1:6379> hset yige name yige
(integer) 1127.0.0.1:6379> hset yige age 16
(integer) 1(2)获取(hget)
127.0.0.1:6379> hget yige name
"yige"127.0.0.1:6379> hget yige age
"16"(3)设置多个(hmset)
127.0.0.1:6379> hmset yige id 2 class 56
OK(4)获取多个(hmget)
127.0.0.1:6379> hmget yige id class
1) "2"
2) "56"(5)获取所有 key(hkeys)
127.0.0.1:6379> hkeys yige
1) "name"
2) "age"
3) "height"
4) "width"
5) "id"
6) "class"(6)获取所有 values (hvals)
127.0.0.1:6379> hvals yige
1) "yige"
2) "16"
3) "180"
4) "120"
5) "2"
6) "56"(7)获取所有 key 和 values (hgetall)
127.0.0.1:6379> hgetall yige
1) "name"
2) "yige"
3) "age"
4) "16"
5) "height"
6) "180"
7) "width"
8) "120"
9) "id"
10) "2"
11) "class"
12) "56"(8)判断是否存在(hexists)
127.0.0.1:6379> hexists yige name
(integer) 1哈希类型就是在 redis 原有基础之上开头加上 h ,包括加减或删除之类,多不概述。
4.集合(set)
(1)添加(sadd)
127.0.0.1:6379> sadd sel 1 2 3 a b
(integer) 5(2)查看(smembers)
127.0.0.1:6379> smembers sel
1) "3"
2) "a"
3) "2"
4) "1"
5) "b"(3)查看元素个数(scard)
127.0.0.1:6379> scard sel
(integer) 5(4)删除元素(srem)
127.0.0.1:6379> srem sel 2
(integer) 1127.0.0.1:6379> smembers sel
1) "a"
2) "1"
3) "b"
4) "3"(5)随机删除元素(spop)
127.0.0.1:6379> spop sel 3
1) "3"
2) "b"
3) "1"127.0.0.1:6379> smembers sel
1) "a"(6)判断元素是否存在(sismember)
127.0.0.1:6379> SISMEMBER sel 1
(integer) 0(7)随机获取元素(srandmember)
随机获取元素个数若为正数,则表示随机获取不重复元素,若个数为负数,则表示随机获取重复元素。
127.0.0.1:6379> smembers sel
1) "4"
2) "b"
3) "a"
4) "2"
5) "1"
6) "3"若获取个数为正数,则获取不重复元素
127.0.0.1:6379> srandmember sel 3
1) "b"
2) "2"
3) "3"若获取个数为负数,则获取重复元素
127.0.0.1:6379> srandmember sel -3
1) "b"
2) "4"
3) "b"(8)交集(sinter)
127.0.0.1:6379> SMEMBERS sel
1) "4"
2) "b"
3) "a"
4) "2"
5) "1"
6) "3"127.0.0.1:6379> SMEMBERS se2
1) "a"
2) "2"
3) "1"
4) "b"
5) "c"
6) "d"127.0.0.1:6379> sinter sel se2
1) "b"
2) "a"
3) "2"
4) "1"(9)寻找交集并保存在一个新集合中(sinterstore)
将 sel 和 se2 的交集保存在 se3 中
127.0.0.1:6379> SINTERSTORE se3 sel se2
(integer) 4
127.0.0.1:6379> SMEMBERS se3
1) "b"
2) "a"
3) "1"
4) "2"(10)并集(sunion)
127.0.0.1:6379> sunion sel se2
1) "4"
2) "c"
3) "b"
4) "a"
5) "d"
6) "2"
7) "1"
8) "3"(11)寻找并集并保存(sunionstore)
将 sel 和 se2 的交集保存在 se4 中
127.0.0.1:6379> SUNIONSTORE se4 sel se2
(integer) 8127.0.0.1:6379> SMEMBERS se4
1) "4"
2) "c"
3) "b"
4) "a"
5) "d"
6) "2"
7) "1"
8) "3"(12)差集(sdiff)
差集之间是有区别的,他会把第一个集合与第二个集合重复的元素删掉,留下第一个集合中不重复元素
127.0.0.1:6379> SMEMBERS sel
1) "4"
2) "b"
3) "a"
4) "2"
5) "1"
6) "3"127.0.0.1:6379> SMEMBERS se2
1) "a"
2) "2"
3) "1"
4) "b"
5) "c"
6) "d"127.0.0.1:6379> sdiff sel se2
1) "3"
2) "4"127.0.0.1:6379> sdiff se2 sel
1) "c"
2) "d"(13)寻找差集并保存(sdiffstore)
127.0.0.1:6379> SDIFFSTORE se5 sel se2
(integer) 2127.0.0.1:6379> SDIFFSTORE se5 se2 sel
(integer) 25.有序集合(zset)
(1)添加(zadd)
127.0.0.1:6379> zadd math 100 yige 90 liangge 80 sange 70 sige
(integer) 4(2)查看(zscore)
127.0.0.1:6379> zscore math yige
"100"
127.0.0.1:6379> zscore math liangge
"90"(3)查看所有(zrange)
从小到大
127.0.0.1:6379> zrange math 0 -1
1) "sige"
2) "sange"
3) "liangge"
4) "yige"从大到小
127.0.0.1:6379> ZREVRANGE math 0 -1
1) "yige"
2) "liangge"
3) "sange"
4) "sige"包含分数
127.0.0.1:6379> ZREVRANGE math 0 -1 withscores
1) "yige"
2) "100"
3) "liangge"
4) "90"
5) "sange"
6) "80"
7) "sige"
8) "70"(4)删除(zrem)
127.0.0.1:6379> zrem math sige
(integer) 1
127.0.0.1:6379> ZREVRANGE math 0 -1 withscores
1) "yige"
2) "100"
3) "liangge"
4) "90"
5) "sange"
6) "80"(5)获取一定范围的分数(zrangebyscore)
括号表示不包含的意思
127.0.0.1:6379> ZRANGEBYSCORE math 80 90
1) "sange"
2) "liangge"
127.0.0.1:6379> ZRANGEBYSCORE math 80 (90
1) "sange"
127.0.0.1:6379> ZRANGEBYSCORE math (80 90
1) "liangge"(6)分页(limit)
127.0.0.1:6379> ZRANGEBYSCORE math 70 100
1) "sange"
2) "liangge"
3) "yige"127.0.0.1:6379> ZRANGEBYSCORE math 70 100 limit 0 2
1) "sange"
2) "liangge"(7)获取指定分数范围的元素个数(zcount)
127.0.0.1:6379> ZCOUNT math 70 100
(integer) 3(8)增加分数(zincrby)
127.0.0.1:6379> ZINCRBY math 5 sange
"85"(9)按排名顺序删除(ZREMRANGEBYRANK)
127.0.0.1:6379> zrange test 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"127.0.0.1:6379> ZREMRANGEBYRANK test 0 2
(integer) 3
127.0.0.1:6379> zrange test 0 -1
1) "d"
2) "e"
3) "f"(10)按分数范围删除元素()
127.0.0.1:6379> zrange test 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"127.0.0.1:6379> ZREMRANGEBYSCORE test 3 5
(integer) 3
127.0.0.1:6379> zrange test 0 -1
1) "a"
2) "b"
3) "f"(11)交集并保存(zinterstore)
127.0.0.1:6379> zrange test 0 -1
1) "a"
2) "b"
3) "f"
127.0.0.1:6379> zrange test1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"127.0.0.1:6379> ZINTERSTORE test2 2 test test1
(integer) 2
127.0.0.1:6379> zrange test2 0 -1
1) "a"
2) "b"(并集ZUNIONSTORE与上文用法相同)
相关推荐
- oracle数据导入导出_oracle数据导入导出工具
-
关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...
- 继续学习Python中的while true/break语句
-
上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个else解...
- python continue和break的区别_python中break语句和continue语句的区别
-
python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...
- 简单学Python——关键字6——break和continue
-
Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
-
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...
- Python 中 break 和 continue 傻傻分不清
-
大家好啊,我是大田。今天分享一下break和continue在代码中的执行效果是什么,进一步区分出二者的区别。一、continue例1:当小明3岁时不打印年龄,其余年龄正常循环打印。可以看...
- python中的流程控制语句:continue、break 和 return使用方法
-
Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...
- L017:continue和break - 教程文案
-
continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...
- 作为前端开发者,你都经历过怎样的面试?
-
已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...
- 面试被问 const 是否不可变?这样回答才显功底
-
作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...
- 2023金九银十必看前端面试题!2w字精品!
-
导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。答案:CSS的盒模型是用于布局和定位元素的概念。它由内容区域...
- 前端面试总结_前端面试题整理
-
记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...
- 由浅入深,66条JavaScript面试知识点(七)
-
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录由浅入深,66条JavaScript面试知识点(一)由浅入深,66...
- 2024前端面试真题之—VUE篇_前端面试题vue2020及答案
-
添加图片注释,不超过140字(可选)1.vue的生命周期有哪些及每个生命周期做了什么?beforeCreate是newVue()之后触发的第一个钩子,在当前阶段data、methods、com...
- 今年最常见的前端面试题,你会做几道?
-
在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...
- 一周热门
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)
