Redis是一个key-value的Nosql数据库,先存在内存中,会根据一定的策略持久化到磁盘,即使断电也不会丢失数据,支持的数据类型比较多。主要用来做缓存数据库的数据和web集群时当做中央缓存存放seesion。
Redis默认有16个内置库
进入Redis
redis-cli 不支持中文
redis-cli --raw 支持中文
select n n指的是0-15的数字,默认使用的是0号库
keys * 查看当前库里所有的key
redis五大数据类型:string、list、hash、set、zset
string类型
一个key对应一个value
添加(修改)
结构:set key value 添加一个key value
添加一个key为name,value为yangmi
:
set name yangmi
结构:mset key value key value... 添加多个key value
如果key存在,则进行覆盖;如果key不存在,则添加
添加一个key为age,value为18;一个key为addr,value为huizhou:
mset age 18 addr huizhou
查询
查询所有key
:
key *
查询一个key
结构:get key
查询key为name的值
:
get name
查询多个
结构:mget key key key...
查询key为 name 、age、 addr的值:
mget name age addr
删除key
结构:del key
del addr
追加数据
结构:append key value
append addr sichuan
自增
结构:incr key 对数量加1,前提必须是数字
对key为age的value加1:
incr age
自减
结构:decr key 对数据减1
对key为age的value减1:
decr age
加减对应的数值
incrby key n 对数据加n
decrby key n 对数据减n
list类型
一个key对应一个字符串列表
{key:[value,value,value...]}
添加
向右(后)添加数据
结构:rpush key value...
向list1后面添加1 2 3 4 5的值:
rpush list1 1 2 3 4 5
向左(前)添加数据
结构:lpush key value ...
向list1前面添加2 33 2的值:
lpush list1 2 33 2
查询
结构:lrange key start stop 范围查询
查询列表list1从0到-1(全部)的值:
lrange list1 0 -1
查询列表list1索引为0到2的值(包含2):
lrange list1 0 2
指定查询
结构:lindex key index 根据index查询
查询list1索引为0的值:
lindex list1 0
修改
结构:lset key index value
将list1索引为0的元素修改为55:
lset list1 0 55
删除
删除最右侧的第一个数据
结构:rpop key
删除list1最右(后)一个元素:
rpop list1
删除最左侧的第一个数据
结构:lpop key
lpop list1
指定删除
结构:lrem key count value count是次数的意思,如果写0就是删除全部
删除list1为2的所有元素:(待验证:当数值超过指定删除次数count时,是从上还是下删除)
lrem list1 0 2
删除当前列表
del key 删除key
del list1
hash类型
一个key对应一个键值对集合
结构:{key:{field:value,field:value....}} 一个field 域对应一个value值
应用场景:存储对象,string类型也可以实现存对象,对这个对象进行json序列化,然后取的时候再进行反序列化。但是,每次修改的时候只能整体修改,不能单个修改某个属性,且必须有实体类型的支撑。序列化和反序列化也需要消耗服务器性能。
添加(修改)
结构:hset key field value
添加一个名为hash1的key,域为height,值165:
hset hash1 height 165
结构:hmset key field value field value ... 添加多个
hmset hash1 weight 90 name yangmi
field存在,则替换value
field不存在,则添加value
查询
结构:hget key field 根据field去查询
查询一个key为hash1,域为height的值:
hget hashi1 height
结构:hmget key field field ... 查询多个
查询一个key为hash1,域为weight和name的值:
hmset hashi1 weight name
查看field
结构:hkeys key
查看key为hash1的所有域:
hkeys hash1
查看所有的value
结构:hvals key
查看key为hash1的所有值:
hvals hashi1
查看所有field和value
结构:hgetall key
hgetall hash1
查看key当中有多少对数据
结构:hlen key
hlen hash1
查看key的类型
结构:type key 所有类型通用
type hash1
删除key
结构:del key
删除field单条、多条数据
结构:hdel key field field ...
hdel hash1 name
set类型
一个key对应一个无序集合
集合特性:无序性,唯一性
{key:{member1、member2、member3...}}
应用场景:抽奖
添加
结构:sadd key member...
创建一个set类型的key名为set1,member为
11 22 33 44:
sadd set1 11 22 33 44
查询
结构:smembers key
查询名为set1的key的成员:
smembers set1
删除
随机删除
结构:key count 随机删除count个member
随机删除2个成员
spop set1 2
指定删除
结构:srem key member ...
srem set1 11 44
交集
结构:sinter key key key ...
返回两个key的交集(共有的)
sadd set1 11 22 33 44
sadd set2 22 33 55 66
sinter set1 set2 #返回22 33
并集
结构:sunion key key ...
合并两个key:
sunion set1 set2
差集
结构:sdiff
key key ...
返回set1有,set2没有的成员:
sdiff set1 set2
移动member
结构:smove key1 key2 member
把set1当中的11移动到set2当中
,set1
就不存在11
:
smove set1 set2 11
判断member在不在key当中
结构:sismember key member 包含返回1,反之返回0
sismember set1 22
zset类型
zset 有序集合,一个key对应一个有序集合
zset特性:唯一性
{key:{score member,score member...}} score数字、member任意类型
应用场景:积分榜、成绩榜单等
添加
结构:zadd key score member score member ...
创建一个key名为zset1:100分杨幂;80分杨紫;90分杨洋
zadd zset1 100 yangmi 80 yangzi 90 yangdi
查询
结构:zrange key start stop 通过索引查看member
查询zset1 索引0到-1的成员:返回(从小到大排序后的结果):杨紫 杨洋 杨幂
zrange zset1 0 -1
结构:zrangebyscore key min max 通过score查看min max之间的member
通过最小最大分数范围查询成员:返回: 杨紫 杨洋
zrangebyscore zset1 80 90
结构:zscore key member 通过member查找对应的score
返回 100
zscore zset1 yangmi
结构:zcount key min max 通过score统计min max之间有多少个member
查找szet1 80到90分之间的数量:返回2
zcount szet1 80 90
结构:zcard key 查看key当中有多少个member
返回3成员
zcard zset1
删除
结构:zrem key member ... 删除指定member
zrem zset1 yangmi
结构:zremrangebyrank key start stop 删除索引对应的member
创建一个zset2的key,删除0到2的三个成员(包含2):
zadd zset2 11 aa 22 bb 33 cc 44 dd 55 ee 66 ff 77 gg
zremrangebyrank zset2 0 2
结构:zremrangebyscore key min max 删除score min max 之间的member
删除从40到68分之间的成员:(待验证是否包含40和68)
zremrangebyscore zset2 40 68
全局操作
查看所有key
keys *
删除key
结构:del key
del hash1
是否存在
结构:exists key 不存在0,存在就是1
exists hash1
改名key
结构:rename old_name new_name
查看数据类型
结构:type key
type hash1
设置过期时间 (撤回消息)
结构:expire key seconds 设置key在seconds秒后过期
设置60秒过期:
expire hash1 60
查看过期时间
结构:ttl key 返回-1永久,-2过期
撤回过期时间
结构:persist key
persist hash1
订阅
结构:subscribe channel(频道)
指定一个10086频道
subscribe 10086
发布
结构:publish channel message(发布的内容)
10086频道发布一条 i like you信息:
publish 10086 i like you