Redis学习教程Word下载.docx
- 文档编号:20804643
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:20
- 大小:546.65KB
Redis学习教程Word下载.docx
《Redis学习教程Word下载.docx》由会员分享,可在线阅读,更多相关《Redis学习教程Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
检查aof日志工具
redis-check-rdb:
检查rdb日志工具
redis-cli:
连接用的客户端
redis-server:
redis服务进程
j、需要从源码目录中复制redis配置文件到redis的安装目录下
cp/****/redis源码目录/redis.conf/usr/local/redis
k、启动redis服务,需要制定配置文件路径
./bin/redis-server./redis.conf
从这里可以看到:
port端口为6379,但是现在这个我们不能使用ctrl+c关闭,这样就导致redis服务关闭,如何使其在后台运行能,请看m步骤
l、使用客户端
./bin/redis-cli
使用:
可以使用set和get命令
setsite
getsite
m、使redis以后台进程运行,修改其配置文件redis.conf文件,将daemonizeno改成daemonizeyes
修改后保存,开启redis服务
./bin/redis-server./redis.conf
psaux|grepredis//检验是否开启
这样我们再去用get获取site会发现已经丢失,如果让其不丢失,请看后续章节
n、redis默认16个数据库,配置文件databases16是从0-15,默认的操作是在0号数据库操作,切换库使用select编号[0|1..|15]
二、通用KEY操作命令
1、keysparttern查询当前有哪些key。
*:
通配任意字符
?
:
通配单个字符
[]:
通配里面某个字符
a、keys*//查询所有的key
b、keyssite//精确查找key为site的键是否存在
c、keyssi?
e//查找si开头e结尾其中任意字符
d、keyssi[td]e//查找site或side
2、randomkey随机查找一个key
3、typekey返回key存的值的类型(没有int这种类型)
4、existskey返回key是否存在(存在返回1,不存在返回0,返回整型)
5、delkey1key2key3…删除多个key(返回删除key的个数int类型)
6、renamekeynewKey给key重命名(成功返回OK),如果newKey存在,那么修改后讲被key的值覆盖了存在的newKey
7、renamenxkeynewKey修key重命名,如果newKey存在,则返回0
8、movekeynumber移动key到一个数据库,number表示数据库编号[0-15],如果移动不存在key或者另一个库已经存在该key返回值为0
9、expirekeytimeout设置key的有效时间,单位为s
10、ttlkey查看key的有效期,不存在key返回-2,不过期或已过期的key返回-1,否则返回秒数
11、pttlkey|pexpirekeytimeout使用毫秒做单位
12、persistkey让key永久有效(成功返回1)
13、flushdb清空当前数据库
14、flushall清空所有数据库
15、dbsizedb中key的个数
三、字符串类型的操作
1、setkeyvalue[ex秒数][px毫秒数][nx]/[xx]
如:
seta1ex100
setb1px10000
注意:
ex和px不能同时使用
nx:
表示key不存在时操作,如果存在返回值为nil
xx:
表示key存在时执行操作,如果不存在返回nil
2、msetkey1value1key2value2…一次插入多个值
msetaaabbbccc
3、getkey获取这个key的值
4、mgetkey1key2key3…一次获取多个值,如果不存在的key返回nil
5、setrangekeyoffsetvalue把字符串的offset偏移字节改成value,如果偏移的超过了字符串值的长度使用\x00进行填充
127.0.0.1:
6379>
setstronetwothree
OK
setrangestr3hello
(integer)11
getstr
"
onehelloree"
如果偏移超过了字符串值的长度:
setrangestr20yes
(integer)23
onehelloree\x00\x00\x00\x00\x00\x00\x00\x00\x00yes"
6、appendkeyvalue把value追加到key值的后面
7、getrangekeystartstop获取字符串中[start,stop]范围的值
start从0开始,stop从-1开始
start>
=length:
返回空字符串
stop>
返回到字符串的结果
start>
=stop:
返回空字符串
8、getsetkeynewValue获取key的旧值并设置一个新值
9、incrkey使key的值自动增加1,返回增加后的值
10、decrkey使key的值自动减少1,返回减少后的值
11、incrbykeynum使key的值增加num,返回增加后的值
12、decrbykeynum使key的值减少num,返回减少后的值
13、incrbyfloatkeyfloat使key的值增加float[浮点数],返回增加后的值
14、decrbyfloatkeyfloat使key的值减少float[浮点数],返回减少后的值
15、setbitkeyoffsetvalue设置二进制偏移量offset上的值
setcharA
getchar
A"
setbitchar21
(integer)0
a"
分析:
A的ascii为65,对于的二进制位01000001,如果要转成小写a的ascii为97二进制位01100001,也就是将第二位的0变成1。
反之如果将小写a变成A,那么就是将第二位的1变成0则可。
注意:
offset如果过大,则中间填0
offset最大为多少:
2^32-1,最大为512M
16、bitopORresfoo1foo2#意思是把foo1和foo2做OR运算,结果存入res中。
bitop支持的位操作有ND、OR、XOR、NOT四个。
17、getbitkeyoffset返回在指定Offset上BIT的值,0或1。
如果Offset超过stringvalue的长度,该命令将返回0,所以对于空字符串始终返回0。
18、bitcountkey获取key中位占1的个数
四、Link链表结构
链表的结构:
□□□□□□□□□□…
1123456789…
头部(下表还是从0开始)尾部
1、lpushkeyvalue把值插到链表的头部,返回值为链表中元素的个数
2、rpushkeyvalue把值插到链表的尾部,返回值为链表中元素的个数
3、lrangekeystartstop取出链表的某部分的值
lrangekey0-1//取出整个链表的值
4、lpopkey弹出链表的最左边的值,返回弹出的值
5、rpopkey弹出链表的最右边的值,返回弹出的值
6、lremkeycountvalue从key链表中删除value值
删除count的绝对值个value后结束
count>
0:
从表头删除
count<
从表尾删除
7、ltrimkeystartstop剪切key对应的链表[start,stop]一段,并把这段重新复制个key
下表还是从0开始,负数是从尾部开始
8、lindexkeyindex返回index索引上的值,下表[0,n-1]或[-1,-n]
9、llenkey返回这个链表的长度
10、linsertkeyafter|beforesearchvalue在key链表中寻找search,并在search值之前或之后插入value,如果search有多个,只会插入一个
11、rpoplpushsourcedest把source链表的尾部弹出并插入到dest链表的头部
12、brpop|blpopkeytimeout等待弹出key的尾/头元素,timeout表示等待超时时间,如果timeout为0,则一直等待
五、set(集合)结构及命令详解
特点:
无序性、唯一性、确定性
注意:
在string和link命令中,可以通过range来访问string的某几个字符或者某几个元素,但因为集合的无序性,无法通过下表和访问来访问部分元素,因此想看元素,要么随机选一个,要么全选
1.saddkeyvalue1value2…往集合key中添加,如果有重复的忽略,返回值为成功添加值的个数
2.smemberskey返回集合所有的元素
3.sremkeyvalue1value2…从集合可key中删除值为value1、value2的元素,返回值为删除的元素个数,忽略不存在的元素
4.spopkey返回并删除集合key中的1个随机元素,返回值为删除的值,随机体现了集合的无序性
5.srandmemberkey返回集合key中随机的一个元素
6.sismemberkeyvalue判断value是否存在key集合中,是返回1,否返回0
7.scardkey返回集合key中元素的个数
8.smovesourcedestvalue把source集合中的value移动到dest集合中
9.sinterkey1key2key3求出key1key2key3三个集合的交集,并返回
10.sinterstoredestkey1key2key3求出key1key2key3三个交集,返回结果存储在dest集合中,返回值为元素个数
11.sunionkey1key2..求出key1ke2..的并集,并返回
12.sdiffkey1key2…求出key1key2…的差集,并返回
六、orderset(有序集合)及命令
1.zaddkeyscore1key1score2key2…添加集合元素,必须要指定score,添加成功返回个数。
如果key相同,则不能添加成功,但是score可以相同,顺序按照添加的顺序定。
2.zrangekeystartstop[withscores]从key集合取出排序后从start到stop的元素,排序从[0,n-1],加上withscores可以将score显示出来
3.zrangebyscorekeyminmaxlimitoffsetN[withscores]从集合key中取出score从min到max的元素,可以使用limit取出部分offset为偏移量N为个数
如:
zrangebyscoreclass020
1)"
hai"
2)"
zhj"
3)"
yang"
4)"
li"
zrangebyscoreclass020limit12
4.zrankkeyvalue查询value在集合key中的排名位置,从[0,n-1],默认升序排列
5.zrevrankkeyvalue查询value在集合key中的排序位置,从[0,n-1],降序排列
6.zcardkey返回key集合的元素个数
7.zremkeyvalue1value2…删除集合中的元素,返回删除元素的个数
8.zremrangebyscorekeyminmax按照score来删除元素,删除score在[min,max]之间的元素,返回删除元素的个数
9.zremrangebyrankkeystartend按照排名删除元素,删除名次在[start,end]之间的元素,返回删除元素的个数
10.zcountkeyminmax返回score[min,max]区间的元素个数
11.zinterstoredestnumkeyskey1key2[weightsweight1weight2…][aggregatesum|max|min]求key1key2的交际并存放在dest集合中,可以指定其权重weight,也可以使用绝活运算sum|min|max
权重使用是weight*score
详细:
ZINTERSTOREdestinationnumkeyskey[key...][WEIGHTSweight[weight...]][AGGREGATESUM|MIN|MAX]
numkeys必须指定,为求交集的key的个数
例子:
zaddzhangsan90chinese88math70english
(integer)3
zaddlisi80chinese99math80english44other
(integer)4
zinterstoreresult2zhangsanlisi
zrangeresult03withscores//默认是交集求和
english"
150"
chinese"
170"
5)"
math"
6)"
187"
zinterstoreresult2zhangsanlisiweights23//权重的使用score*weight
zrangeresult03withscores
380"
420"
473"
zinterstoreresult2zhangsanlisiaggregatemax//聚合的使用
80"
90"
99"
zinterstoreresult2zhangsanlisiweights23aggregatemin//聚合与权重一起使用
140"
176"
180"
12.ZUNIONSTOREdestinationnumkeyskey[key...][WEIGHTSweight[weight...]][AGGREGATESUM|MIN|MAX]ZUNIONSTORE命令计算numkeys联合排序按指定键,并将结果存储在目的地。
它是强制性的传递的输入键和其他(任选)参数之前,以提供输入键(numkeys)的数量
13.zincrbykeyincrementvalue为某个元素的score值增加increment
zincrbyresult10english
zrangeresult0-1withscores
七、HASH数据类型相关命令
1.hsetkeyfieldvalue把key中的field域的值设为value,如果没有就添加,如果有就覆盖
2.hmsetkeyfiled1value1fieldsvalue2…设置多个域的值
3.hgetkeyfield返回key中的field域的值
4.hmgetkeyfield1field2…返回key中的多个field的值
5.hgetallkey返回key中的所有域和值
6.hdelkeyfield删除key中的field域
7.hlenkey返回key中元素的数量
8.hexistskeyfield判断key中有没有field域,存在返回1反之0
9.hincrbykeyfieldvalue为哈希表key中的域field的值加上增量value
10.hincrbyfloatkeyfieldvalue为哈希表key中的域field的值加上浮点增量value
11.hkeyskey返回key中所有的域
12.hvalskey返回key中所有的value
八、redis事务
redis支持简单的事务(不支持回滚,可以需要队列里的命令)
redis和mysql事务的对比
mysql
redis
开启
starttransaction
multi
语句
普通sql
普通命令
失败
rollback会馆
discard取消
成功
commit
exec
redis开启事务后,所有的语句都放在一个队列里。
rollback和discard区别
如果已经成功执行了2条语句,第3条语句出错
rollback后,前面2条的语句影响小时
discard只是结束本次是事务前的2条语句造成的影响仍然还在
在multi后面的语句中,语句出错可能有2种情况
1、语法本身问题
这种,exec时报错,所有语句都不得执行
2、语法本身没有错,但使用对象有问题,比如zadd操作link对象
exec后,会执行正确的语句,并跳过有不适当的语句
如何避免这种zadd操作link这种呢,由程序员负责
redis的事务中,启用的乐观锁,只负责监测key有没有被改动过。
watch命令:
watchkey1key2…监控key,在执行事务前使用该命令进行监视
unwatch:
取消所有的watch监视,但是unwatch不能用在事务里
九、频道发布与消息订阅
1.publishchannelcontent发布消息,返回发布到监听者的个数
2.subscribechannel1channel2…监听频道消息,可以同时监听多个
3.psubscribepattern使用通配符监听多个频道消息
psubcribenews*//监听以news开头的广播
4.pubsubchannels[pattern]列出当前活跃的频道,活跃频道指的是那些至少有一个订阅者的频道,订阅模式的客户端不计算在内。
pattern参数是可选的:
如果不给出pattern参数,那么列出订阅与发布系统中的所有活跃频道。
如果给出pattern参数,那么只列出和给定模式pattern相匹配的那些活跃频道。
5.pubsubnumber[channel-1...
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Redis 学习 教程