当前位置:   article > 正文

redis从windows到linux_redis从windows备份数据到linux

redis从windows备份数据到linux

什么是redis

redis是一个高性能的通过C语言开发的key-value数据库,是为了解决高并发,高扩展的NOSQL(非关系)类型数据库,支持的数据类型包括,String,list,hash,set和Zset。 redis把数据都存储在内存中以提高读取效率,周期性(如 y=sinx T= 2Π)的进行数据写入磁盘。

NoSQL:是对关系型数据库做补充,且离不开关系型数据库。 是用于解决海量用户和高并发存在的问题,好处有:1.可以减少磁盘I/O的次数 2.可以只存储数据,而不存储数据之间的关系。

redis特征
1.数据之间没有相互关系
2.内部采用单线程机制进行工作
3.高性能
4.可以支持多种数据类型。
5.持久化支持,比如断电之后虽然在内存中,但是可以进行数据恢复。
redis应用:为热点数据进行加速查询,如微博突然出现了一个热点事件,秒杀买东西,直播,验证码控制等等。

Redis的下载和安装

1.启动redis(采用3.2.100)
在这里插入图片描述

出现相关界面

在这里插入图片描述
port是redis的端口号,如果想要启动多个redis就需要修改端口号,pid是这个redis的名称,每次启动都会有不同的redis实例化对象

然后启动redis客户端对redis进行操作,默认主机是localhost(127.0.0.1)
在这里插入图片描述
在这里插入图片描述

2.redis的基本操作
redis操作采用命令行形式:
分为功能性,清屏性,帮助查询命令,退出指令
1.功能性
添加信息命令:set key value 如:set name liming
查询信息命令: get key 如:get name(key不存在就会返回nil)

在这里插入图片描述

2.清除屏幕信息指令:
clear

3.帮助查询信息指令:用于查看一个命令或者群组的具体使用方式
help 命令名称:如 help get
在这里插入图片描述
第一行是:使用命令的格式
第二行是:命令的具体说明
第三行是:版本号
第四行是:所属群组
help @群组 :如 help @string,help @list…

4.退出命令
quit,exit,esc键

Redis数据类型

一:string类型

(当value是数字时,也是字符串类型,但是可以进行加减乘除操作)
1.基本操作
***添加/修改:

单个数据:set key value
多个数据:mset key value  key value .......
  • 1
  • 2

获取:

单个数据:get key
多个数据:mget key key key....
  • 1
  • 2

删除:

单个数据:del key,删成功后会返回删除记录的条数
多个数据:del key key key......,删成功后会返回删除记录的条数
  • 1
  • 2

获取字符串长度:

strlen key
  • 1

追加信息到原始信息后部:

append key value 如果不存在这个key,就会新建
  • 1

mset与set的比较

如果需要存放10条数据,set所花费的时间为 发送*10+响应*10+处理*10;
mset所花费的时间为:发送*1+响应*10+处理*1,明显快于set。
但是,当数据有1亿条或者非常大时,就需要对这1亿条数据进行合理分割,因为redis是单线程的,会在请求,处理,响应的时候发现堵塞的情况,就会影响处理的效率和时间。
  • 1
  • 2
  • 3

当mysql表中字段数据太多时,就需要进行分表操作,但是不同表的主键ID是自增的,这就导致主键ID可能会重复,交给redis管理就可以解决这些问题

设置数值数据增加指定返回的值(只能对数值进行处理)

incr key	对key的value进行加一
incrby key increment 对key增加指定的值  如:incryby age 10
incrbyfloat key increment		对key增加指定的小数值  如:incryby age 10.5
  • 1
  • 2
  • 3

设置数值数据减少指定返回的值

decr key  对key的value进行减一
decrby key increment		对key减少指定的值  如:decryby age 10
  • 1
  • 2

当需要对某种操作进行限制的时候,如给一个明星投票,只限制小时投一次,4小时以后才能继续投,需要限制投票操作就可以用redis

给数据指定生命周期

setex key seconds value		给key的数据value设置以秒为单位的生命周期
psetex key milliseconds value	给key的数据value设置以毫秒为单位的生命周期
  • 1
  • 2

业务场景的具体使用
如在微博中每个用户都在查看一个明星的关注数 粉丝数,如何提高查询和访问效率
解决办法,在redis中设置明星的用户信息,把id和字段属性作为key,数据作为value后台及时刷新即可。

key value
user: id:111:fans 666666
user: id:111:focus 2222

二:hash

key----------value(filed-value,
		      filed-value,
		      filed-value,
		      ..............)
  • 1
  • 2
  • 3
  • 4

存储格式也是key-value,但是这个value我们可以把它当作存储了一个 实体类对象,如 存储一个user对象,key可以时user的主键,value里面有name password,age,sex等属性。
1.基本操作
添加/修改数据

	单个操作:hset key filed value  给key中添加一个名为filed的value数据
	多个操作:hmset key filed value filed value.....
  • 1
  • 2

根据是否有值来存入数据

hsetnx  key fileld value 如果当前的filed中没有值就把value存入,如果有值就什么都不做
  • 1

获取数据

	单个操作:hget key filed	获取key中,名称为filed的数据
	多个操作:
		hmget key filed  filed .....
		hgetall key 	获取key中全部的数据 ,如果fileld过多,此方法效率非常低。
  • 1
  • 2
  • 3
  • 4

删除数据

hdel key filed filed filed ....... 	删除key中,名为field的数据
  • 1

获取哈希表中字段的个数

hlen key
  • 1

查找哈希表中是否存在指定的字段

hexists key filed
  • 1

获取hash表中所有的字段名和字段值

hkeys key
hvals key
  • 1
  • 2

给指定的数值数据增加指定的值

hincrby key fileld increment  给名为key的hash表中字段名为fileld的字段属性增加一个increment 
如:hincrby user age 10
hincrbyfloat key fileld increment
  • 1
  • 2
  • 3

hash类型应用场景
淘宝网站购物车的实现

一 用于存放用户的购买信息
1.一个用户对应一个购物车,把用户id作为key
2.一个购物车里有多个物品,把物品编号作为fileld
3.一个物品可以购买多个,把物品数量作为value
二用户存放商品的具体信息
1.某一类商品对应一个hash,把商品类型id作为key
2.把商品编号作为fileld
3.把商品的具体信息用json字符串存入value中。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

对应操作需要的命令

添加 hset hmset
查看 hget hmget hgetall hlen hexists hkeys hvals 
修改 hset incrby incrbyfloat
删除/清空 hdel
  • 1
  • 2
  • 3
  • 4

三:list:数据可重复,且有序

list底层采用双向链表进行构造,可以存储多个数据,并且可以体现数据 ***进入存储空间的顺序***
1.基本操作
***添加/修改数据***

lpush key value value value..... 给名为key的list从 ***左边*** 添加一个或多个数据
rpush key value value value...给名为key的list从***右边***修改一个或多个数据
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

获取数据

lrange key start stop	从左边开始获取key中从start到stop的value
lindex key index 
llen key 
  • 1
  • 2
  • 3

获取并且移除数据

lpop key	从左边第一个位置移除一个value并获取
rpop key	从右边第一个位置移除一个value并获取
  • 1
  • 2

规定时间内获取多个lisit表中的一个数据并且移除数据

blpop key key.......timeout  在timeout的时间内,若干个list表中的其中一个出现了数据就直接移除,如果同时出现,就移除排在在前面的list表,如果超时就返回空。 
brpop key key......timeout
  • 1
  • 2

移除指定的数据

lrem key count value  从key中移除count个数据value的值
如 lrem age 3  50 从 age中移除3个数据为50的值
  • 1
  • 2

业务场景

有顺序又有多个数据。
如朋友圈点赞和评论

点赞队列就是一个list,里面的点赞人名称就是value。
评论队列也是一个list,里面的评论内容就是value。
  • 1
  • 2

四:set:数据不可重复,且无序

set要求有1.存储大量数据
2.提供更高效的查询效率,比list双向链表查询快。
set模型
set模型采用hash的模型,但是把hash中fileld用来存储数据,value变成空。
  • 1
  • 2
  • 3
  • 4

1.基本操作

添加数据

sadd key member member.... 给名为key的set表中添加一个或者多个member数据
  • 1

获取全部数据

smembers key
  • 1

删除数据

srem key member member...
  • 1

获取set的数据总量.

scard key  获取名为key的set表中一共有的数据条数。
  • 1

判断set集合中是否存在指定的数据

sismember key member 如果有就返回1,没有就返回0
  • 1

随机获取set集合中的指定数量的数据

srandmember key count
  • 1

随机获取set集合中的指定数据,并且移除

spop key count
  • 1

业务场景:随机推送类的信息检索,如新闻,歌曲,旅游路线

如你最开始玩某一个application的时候,会让你选择兴趣爱好,但是后期会随机推送其他的热点set集合到你的set集合中,然后一起展现给你,如果你喜欢就存入你的set,不喜欢就不存入。

求多个集合的交,并,差集

sinter key1 key2 .....
sunion key1 key2....
sduff key1 key2.....
  • 1
  • 2
  • 3

求多个集合的交,并,差集并且存储到指定的集合当中

sinterstore destination key1 key2.... destination是值指定的集合中,

如 sinterstore u3 u1 u2,就是把u1和u2中都有的数据存入u3中

sunionstore destination key1 key2...

sduffstore destination key1 key2....
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

将指定数据从原来的集合中移动到另一个集合

smove source destination member 
  • 1

业务场景

QQ 微信需要推送你可能认识的朋友的时候就可用到这些操作。如可以从好友A出发,获取到A的好友B的好友信息列表。

五:sort set:数据不可重复,且有序

sort set 是在set的基础上添加了可排序字段score。
  • 1

1.基本操作
添加数据

zadd key score1 member1 score2 member2 ...... score用于指定排序顺序,member用于存放数据
  • 1

获取数据

zrange key start stop {withscores} 输出start到stop的值,如果有wtihscores机会输出里面的score
如:zrange name 0 -1 输出全部的值(member)
	zrange name 0 -1 输出全部的值(member)和用于指定排序的数值(score)
	
zrevrange key start stop {withscores} 倒序排序。
  • 1
  • 2
  • 3
  • 4
  • 5

删除数据

zrem key member
  • 1

按条件获取数据

查询score字段范围在srart-stop的所有memeber值
如果添加withscores,也查询出排序字段的score值,
如果添加limit,表示从min~max中查询出指定返回的数据记录。

zrangebyscore  key min max {withscores} {limit} 
如:zrangebyscore price 20 80 limit 0 3
zrevrangebyscore  key min max {withscores} {limit}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

按条件删除数据

删除索引从start~stop的所有memeber值
zremrangebyrank key start stop

 删除score字段范围在min-max的所有memeber值
zremrangebyscore key min max
  • 1
  • 2
  • 3
  • 4
  • 5

注意:

	min、max用于限定搜索查询的条件 min<score<max
	start、stop用于限定查询的范围,一般是索引
  • 1
  • 2

获取集合数据总量:

zcard key

zcount key min max 查看score里min到max的数据一共有几个
  • 1
  • 2
  • 3

交集、并集操作

交集:zinterstore destination numkeys key key ...  numkeys表示后面需要提供的集合个数
如 zinterstore name 3 zhangsan wangwu lisi.
并集:zunionstore destination numkeys key key....
  • 1
  • 2
  • 3

业务场景

对资源进行排序,如选出音乐当作最受欢迎的10首歌曲,并对他们进行从小到大排序,还有QQ会员,音乐会员存在的时长。
获取数据对应的索引

zrank key member
zrevrank key member
  • 1
  • 2

获取数据对应的score值

zscore key member
  • 1

给socre值增加指定的数据

	zincrby key increment member 给一个sort set中的meber的socre值增加increment
	如 zincryby name 1 zhangsan
  • 1
  • 2

通用命令 key

key作用:表示数据存储的名称
  • 1

删除指定key

del key
  • 1

判断key是否存在

exists key
  • 1

获取key的类型

ytpe key
  • 1

为key设置生命周期

expire key seconds
pexpire key milliseconds
//以下两个一般在Linix中使用
expireat key timestamp
pexpireat key milliseconds-timestamp
  • 1
  • 2
  • 3
  • 4
  • 5

获取key的有效时间

 ttl key	不存在返回-2,永久存在返回-1,设置了有效期返回时长
 pttl key
  • 1
  • 2

把key的生命周期变为永久性

persist key  操作成功返回1,操作失败返回0
  • 1

查询key

keys pattern 
keys *   查询所有的key,返回的是一个list列表
  • 1
  • 2

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号