redis默认端口:6379
服务端打开方法:
找到对应的安装路径输入 redis-server 回车运行即可
客户端连接服务端方法:
打开对应的redis的安装目录,输入 redis-cli 返回对应的端口号即表示成功连接
简单的数据存储及获取:
数据存储:
set name helloworld set表示存储 name表示数据名称 helloworld表示对应存储的数据
默认可重复赋值
setnx name helloworld setnx表示不可重复赋值 但使用set可强行重复赋值 可用于解决分布
式锁,分布式锁常用于秒杀问题,当一个商品被秒杀后使用setnx设置指定的用户id到服务端,其它用
户在点击的时候也需要使用setnx去设置对应的变量名,由于该方法不可重复赋值,所以无法存储对应
的数据,而存储的用户就是成功强到秒杀的用户
setex a 10 apple setex表示设置有效期的数据 a数据名称 10表示设置有效期时间单位秒
ttl x 表示获取对应变量名的有效时间, x数据名称 -1表示永不过期,-2表示已过期(或不存在的)
apple对应的存储数据,应用场景,优惠卷的有效时间
mset x 1 y 2 z 3 mset表示批量存储 x 为变量名 1为数据变量,以此类推
比特流设置:
1字节=8比特 1kb=1024字节 1mb=1024kb 1gb=2024mb
1个int8就是一个字节,一个中文:3个字节
setbit myket 7 1 setbit表示设置比特值, myket表示对应的比特值变量名, 7表示在第几位设置值
(下标从0开始),1表示对应的值,值为0,1两种形式
数据获取:
get name get表示获取 name表示对应数据名称
mget x y z mget表示批量获取 x y z表示对应的数据名称
getbit myket 7 1 setbit表示设置比特值, myket表示对应的比特值变量名, 7表示在第几位设置值
(下标从0开始),1表示对应的值,值为0,1两种形式,没有赋值的地方获取值默认为0
数据删除:
del name del表示删除 name表示对应数据名称
数据拼接:
append name ! append表示拼接 name表示对应的数据名 !表示对应的数据 如果需要添加
空格需要使用双引号标住打空格在输入内容 例:" !"这样获取到的就是 helloworld !
数据增减:
incr id 相当于id的值+1 incr表示自加 id数据名称
incrby id 10 id每次自增10 +!0 incrby表示设置自增数, id表示数据名称 10设置对应的数
decr id 相当于id的值-1 decr表示自减 id数据名称
decrby id 10 id每次自减10 +!0 decrby表示设置自减数, id表示数据名称 10设置对应的数
该功能用于电商抢购、秒杀,游戏中的投票、攻击次数。计算当前房间中的在线人数
获取字符串长度:
strlen name表示获取name的数据长度, strlen表示获取长度
bitcount name表示获取name比特流中为1的bit数
获取所有数据名:
keys * 表示获取当前所有数据变量名
keys *_1 表示获取以'_1'结尾的数据变量名
keys *p* 表示获取包含'p'的数据变量名
keys p* 表示查找'p'开头的数据变量名
exists key1 判断对应变量是否存在,存在返回1,不存在返回0
type name 查询对应值的类型
del x y z 删除对应的数据,可以多删.以空格作分割
expire name 5 表示给已存在的数据设置一个有效期 name表示对应的变量名 5表示有效期
flushall 清空所有数据,慎用
进阶的数据存储及获取:
1.list数组类型:
lpush names yuchengfei guangaoke zhuanghaoyu lpush表示从左添加数据,names表示数组名称,之后的为数据,空格表示分开
linsert names after "yuchengfei" zhangyuhao linsert表示插入数据,names如上,after表示在对应的数据之后,zhangyuhao为插入数据
lrange names 0 -1 lrange表示查询,names如上,0表示从左数第一位,-1表示最后一位
lindex names 3 linedex表示根据下标查询,names如上,3表示下标数,下标从0开始
lset names 7 yuchengyang lset表示根据下标修改数据,names如上,7如上,yuchengyang修改后的数据
lpop names lpop表示左边第一位值出列(删除),names如上
rpop names rpop表示右边第一位值出列(删除),names如上
lrem names 0 yuchengfei lrem表示根据数据值查找删除,names如上, 0是count值,表示删除的数量,value表示删
除的成员,count==0,表示删除列表中所有值为value的成员,count>0,表示删除列表左
侧开始的前count个value成员,count<0,表示删除列表右侧开始的前count个value成员
2.hash数组操作
数据大致格式:
info{
name : alvin
........... : ..........
}
hset info name alvin hset表示哈希值的创建,info这个哈希数组的名称,赋值规律是第一个为对应键值,第二个
为值,如这个哈希数组,变量名是info,里边的第一个键值对为name:alvin,name为key,alvin
为对应值,类似于python中的字典
hget info name hget表示获取哈希数组中对应的值,info表示对应的哈希数组名,name表示对应的键值(key)
hgetall info hgetall表示获取哈希数组中所用的键值对数据,info同上
hmget info name age hmget表示批量获取哈希数组中对应键值的数据,info同上,name,age对应键值(key)
hexists info age hexists表示查看对应键值是否存在,info同上,age对应键值(key)
hdel info age hdel表示删除,info同上,age同上,表示删除info中的age元素键值对
hincrby info age 10 hincrby表示自增,info同上,age对应键值(key),10表示对应自加的值,输入负值表示减
hkeys info hkeys表示查询所有key键值,info同上
hvals info hvals表示查询所有value值,info同上
3.集合数据操作
集合大致格式:
"s":{item1,item2,...}
sadd key member1 member2 .... sadd表示添加元素,key表示对应的元素名 member1~2这些表示对应的元素
smembers key smembers查询对应集合的值,key同上
scard key scard表示查对应集合的长度,key同上
spop key spop表示从集合中随机拿出一个值然后删掉.key同上
screm key value screm表示删除指定集合中的指定元素.key同上,value表示对应元素的值
交集、差集和并集(适合协同过滤、基于用户、物品)
sinter key1 key2 key3..... 交集、比较多个集合中共同存在的成员
sdiff key1 key2 key3.... 差集、比较多个结合中不同的成员,返回的是key1中不同的变量成员
sunion key1 key2 key3.... 并集、合并所有集合的成员、并去重
4.zset(有序集合)
大致格式:
"name":{score/value},根据score来进行排序,score必须为数字
zadd key score1 value1 score2 value2 score3 value3........ zadd表示添加元素,key表示对应的元素名 score表示对应的序列号(必须为数字)
value表示值,也可后续单独添加
zrangebyscore key min max 表示按照score从区间进行高到低的排序,min表示最低值,max表示最高值
zrevrangebyscore zx max min 表示按照score从区间进行低到高的拍寻,min与max同上,切记与上不同的是min
与max的顺序需要颠倒
zrange key start stop 类似于切片.将对应的下标数(类似数组下标)按照从低到高的顺序排序,start stop
表示对应的切片区间0 -1表示全部,负值表示倒数值
zrevrange key start stop 与上类似,这个是从高到低展示获取
zcard key 获取集合长度
zscore key value 获取对应value值的对应的score值
zrank key value 获取指定成员在集合中的score值从小到大的排名
zrevrank key value 与上类似,这个是获取从大到小的排名
zcount key min max 获取指定score区间的值的成员数量
zincrby key score value 给指定成员增加score值,score填写的是需要增加的值
zrem key value 根据指定成员删除对应数据
zpopmin key [count] 删除指定数量的成员,从最低的score开始删除,count表示删除的数量
zpopmax key [count] 同上,从最高的开始删除
这个应该多数应用在排行榜中
rdis数据类型:
1.String类型:
字符串类型,是Redis中最基础的数据存储类型,它在redis中是二进制安全的,也是byte类型单个数据最
大容量是512M, 使用方法 set 变量名 变量数据
结构:
redis = {
"name":"helloworld"
}
select切换数据库
redis的配置文件中,默认有0-15之间的16个数据库,默认操作的就是0号数据库,默认处于0号库
127.0.0.1:6379> 这是0号库
127.0.0.1:6379[1]> 这是1号库
127.0.0.1:6739[2]> 这是2号库
切换命令: select <数据库ID>
比特流:
例如'a'的ASCL码是97,转换为二进制是: 01100001。offset的学名叫做"偏移"。二进制中的每一位就是
offset值,比如在这里 offset0等于'0',offsaet 1等于'1',offset 2等于'1',offset 6 等于 '0',没错,offset是从
左到右计数的,也就是从高位往低拉。
例如将andy中的'a'变成'b'就是将 01100001变成 01100010 (b的ASCLL码是98),也就是将'a'中的offset
6从0变成1,将offset7从1变成0