Redis学习笔记

Redis是什么

1.Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis安装

1.redis可以运行在Windows系统或者Linux系统上,在99%的企业开发都是运行在Linux系统上的,但是因为还没有学Linux,所以先在windows上玩,但是问题不大。
2.下载地址:https://github.com/microsoftarchive/redis/releases
3.Windows上更新较少,现在在3.2.100版本,下载好后进行安装,安装教程百度可以找到,这里就不写了。

Redis怎么玩

Redis连接

1.打开cmd窗口,进入redis根目录,输入redis-server redis.windows.conf启动redis服务
2.另外打开一个cmd窗口,同样进入redis根目录,输入redis-cli.exe -h 127.0.0.1 -p 6379 即可连接本地redis

Redis五大数据结构

分别是 键(key),字符串(string),列表(list),集合(set),哈希(hash)

键(key)

1.set key value
设置一个键值对进入数据库中,如果数据库中已经有这个键了,将会覆盖
例如:key k1 v1
此时数据库中会新建一个键值对(k1,v1)

2.get key
查看一个键值对

3.keys *
查询这个表中所有的键

4.exists key
判断这个key在表中是否存在,存在返回1,不存在返回0
例如:exists k1
返回(integer)1
例如:exists k2
返回(integer)0

5.move key db
把当前表中的一个键值对移到另外一个表中,成功返回1,失败返回0
例如:set k2 v2
move k2 1
此时把刚刚加进去的(k2,v2)键值对,移到了1表中,此时0表中没有该键值对,1表中有
返回(integer)1

6.expire key 秒钟
给key设置一个过期时间
key的过期:例如在双十一的时候,我们需要用redis做缓存,希望3天以后这个key自动过期,这个时候我们就需要使用这个命令,key的过期代表这个key的生命周期结束,使用get命令也在表中查不到这个key的
例如:expire k1 10
k1这个key 10秒钟之后过期

7.ttl key
查看这个key还有多少秒过期
-1表示永不过期,-2表示已经过期

8.type key
查看一个key的数据类型
例如:type k1
返回:string

字符串(string)

1.set/get/del/append/strlen
设置一个键值对/获取一个键值对/删除一个键值对/往一个值后面加上字符串/获取字符串长度

2.incr/decr/incrby/decrby(一定是数字才可以操作)
数字+1/数字-1/数字+一个数/数字-一个数
例如:
set k2 2
incr k2;(k2原本为2,操作之后,变成3)
decr k2;(k2原本为3,操作之后,变成2)
incrby k2 6;(k2原本为2,操作之后,变成8)
decrby k2 4;(k2原本为8,操作之后,变成4)

3.getrange/setrange 范围内取值/范围内设值
例如:
set k3 abcdef
getrange k3 0 3;(返回:abcd)
setrange k3 0 xxx;(返回xxxdef)

4.setex(set with expire)
例如:set k4 10 v4
k4之前是不存在的,先添加一个(k4,v4)的键值对,再将其的过期时间设置为10秒

5.setnx(set if no exist)
例如:setnx k1 v111
如果该键不存在才生效,之前库里已经有了k1,所以此时不生效

6.mset/mget/msetnx
批量设置/批量获取/批量不存在时生效
例如:mset k3 v3 k4 v4 k5 v5
此时数据库中有k3 k4 k5
例如:mget k3 k4 k5
此时返回 v3 v4 v5
例如:msetnx k5 v5 k6 v6
此时数据库中已经存在了k5,所以这条不会生效
例如:msetnx k6 v6 k7 v7
此时数据库中有k6 k7

7.getset
先get再set

列表(List)

1.lpush/rpush/lrange
lpush和rpush都可以添加一个列表到数据库,但是稍有不同的是,rpush输入,输出是顺序的,而rpush输入,输出是逆序的
lrange,输出
例如:lpush list01 1 2 3 4 5 6
lrang list01 0 -1
输出:6 5 4 3 2 1
例如rpush list 02 1 2 3 4 5 6
lrang list02 0 -1
输出 1 2 3 4 5 6

2.lpop/rpop
lpop出栈顶元素,rpop出栈底元素
例如:lpop list01
输出:7
例如:lpop list02
输出:1
例如:rpop list01
输出:1
例如:rpop list02
输出:7

3.lindex
根据索引下标获得元素(从上到下)

4.llen
获取列表长度

5.lrem key 删除N个元素
例如:rpush list03 1 1 1 2 2 2 3 3 3 4 5 6
lrem list03 2 3;(删除两个3)
lrange list03
输出:1 1 1 2 2 2 3 4 5 6

6.ltrim key 截取key中的一段再赋值给key
例如:rpush list04 1 2 3 4 5 6 7 8 9
ltrim list04 0 3
lrange list04
输出:0 1 2 3

7.rpoplpush 一个列表 另一个列表
将一个列表的栈底元素拿出放入另一个列表的栈顶
例如:rpoplpush list01 list02
原来:list01: 6 5 4
list02:2 3 4 5 6
之后:list01:6 5
list02:4 2 3 4 5 6

8.lset key index value
将列表中的一个值替换
例如:lset list02 2 a
lrange list02 0 -1
输出:4 2 a 4 5 6

9.linsert key before/after 值1 值2 在一个值之前或之后插入另一个值
例如:linsert list02 before a java
linsert list02 after a python
lrange list02 0 -1
输出:4 2 java a python 4 5 6

集合(set)

1.sadd/smembers/sismember
添加一个集合/查看一个集合/查看一个集合中是否有一个元素,如果有返回1,没有返回0
例如:sadd set01 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 7 8
smembers set01;
输出:0 1 2 3 4 5 6 7 8
例如:sismember set01 0
返回1
sismember set01 9
返回0

2.scard 获取集合中元素个数

3.srem key value 删除集合中的一个元素
例如:srem set01 0
smembers set01
输出:1 2 3 4 5 6 7 8

4.srandmember key 一个整数
随机取集合中的几个数
例如:srandmember set01 3
此时会随机返回set01中的3个数

5.spop key
随机出栈

6.smove key1 key2 在key1里的某个值
作用是将key1里的某个值移到key2中

7.数学集合类
1)差集sdiff:sdiff key1 key2
返回集合1中有而集合2(或后面的集合)中没有的数
例如:
sadd set02 1 2 3 4 5 6
sadd set03 1 2 3 a b c
sdiff set02 set03
返回:4 5 6
2)交集:sinter key1 key2
返回集合1和集合2共有的数
例如:sinter set02 set03
返回:1 2 3
3)并集sunion key1 key2
返回集合1和集合2所有的数
例如:sunion set02 set03
返回:1 2 3 4 5 6 a b c

哈希(hash)

1.hset/hget/hmset/hmget/hgetall/hdel
新建一个哈希/获取一个哈希/新建多个哈希/获取多个哈希/获取所有哈希/删除一个哈希
例如:
hset user id 11
hget user id
hmset user name zs age 12 score 91.5
hmget user id name zs
hgetall user
hdel user id

2.hlen 获取哈希的长度
此时user中有 name age score
hlen user
返回3

3.hexists key key中的某个值的key
查看key值中的某个key是否存在,存在返回1,不存在返回0
例如:kexists user name
返回1
例如:kexists user id
返回0

4.hkeys/hvals
查看哈希的键/查看哈希的值
例如:hkeys user
返回:name age score
例如:hvals user
返回:zs 12 91.5

5.hincrby/hincrbyfloat
给一个键增加整数值/给一个键增加小数值
例如:hincrby user age 2
此时user age 为14
例如:hincrbyfloat user score 0.5
此时user score 为92

6.hsetnx
当一个值不存在时才设置,如果不存在返回1,存在返回0
例如:hsetnx user id 1
此时返回1,并且user中会保存id的内容
例如:hsetnx user age 11111
此时返回0

Redis持久化

Redis的所有数据都是保存在内存中,如果redis崩掉的话,所有数据将会丢失。Redis的持久化就是将数据保存在硬盘(可永久保存的存储设备)中,以便数据恢复。Redis提供两种持久化方式,RDB(redis database)和AOF(append only file),下面依次对其进行介绍。

RDB(Redis DataBase)

官网介绍:在指定的时间间隔内,将内存中的数据集快照写入磁盘,也就是行话讲的snaposhot快照,在恢复时,将快照文件直接写入内存。
介绍:redis会单独创建(fork)一个子进程来进行持久化,会先将数据写到一个临时文件中,待持久化过程都结束了,在用这个临时文件替换上次持久化好的文件。在整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的回复,且对于数据恢复的完整性不是十分敏感,nameRDB方式要比AOF方式更加的

AOF(Append Only File)

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值