Redis---学习笔记(更新中)

一.基本命令

#查看所有键
keys * 

#查看指定键
keys key

#查看模糊键
keys ke*
keys ke?
keys ke[a-z]
keys ke\?

#判断键是否存在
exists key

#查看键类型
type key

#清空所有
flushall

 

 

 

二.数据类型相关命令

  1.字符串:key尽量用【对象类型:属性:值】的规则命名    

# 增/改
set key
mset k1 k2 k3

# 
del key
del k1 k2 k3

# 
get key
mget k1 k2 k3

# 统计
strlen key

# 加1
incr key

# 加n
incr key n

# 增加内容(key不存在会创建)
append key xxx

 

  2.散列:由键 字段 值 组成

# 增:把一条用户信息保存为散列数据
hset user name Tom
hset user age 20

# 改:名字存错了,重新存
hset user name Haha

# 查:查看结果
hget user name

# 检查name字段是否存在:如果user中没有name,上一步会报错
hexists usr name

# 忘记user中还有哪些字段?
hkeys user
hvals user

# 删掉user中的age
hdel user age

# 删掉整个user
del user

# 在加一条数据,但是之前的增加数据太麻烦了?
hmset user name tom age 20

# 查看数据
hmget user name age

# 上面的查看数据还是太麻烦?
hgetall user

# 年纪加10岁
hincrby user age 10

 

  3.列表:双向链表,适合快进快出

#
lpush number 1 2 3 4 5

#
lrange number 0 -1 #从第一个索引查询到最后一个索引
lindex number 0 # 查询指定索引的值

#
lset number 0 9 # 把列表中的索引为0的值改成9
linsert number before 9 111 # 在9的前面插入111
linsert number after 9 222 # 在9的后面插入222

# 
lpop number
rpop number
lrem number count value
ltrim number0 9

# 把source列表的最后一个元素添加到dest列表的左边
rpoplpush source dest

# 统计
llen number

 

  4.集合

# 增/改
sadd myset h j k

#
smembers myset

#
spop myset
del myset

# 统计
scard myset

# 随机取一个
srandmenber myset

# 交集
sinter set1 set2

# 并集
sunion set1 set2

# 差集
sdiff set1 set2
sdiffstore storeset set1 set2

 

  5.有序集合

# 增/改
zadd userscore 100 h1 200 h2 50 h3 30 h4 70 h5
zadd userscore 120 h6

#
zrange userscore 0 -1
zscore userscore h1

zrange userscore 0 3 # 按照分数从小到大排序返回索引 0-3 中的元素
zrange userscore 0 3 withscores

zrangebyscore userscore 10 50 # 按照分数从小到大排序返回分数为 10-50 中的元素
zrangebyscore userscore 10 50 withscores
zrangebyscore userscore 10 50 withscores limit 1 3

zrevrange  # 用于倒序
zrevrangebyscore # 用于倒序

#
zrem userscore h1 h2
zremrangebyrank userscore 1 2  # 删除排名1到2的元素

#统计
zcard userscore
zcount userscore 10 20 统计指定范围分数内的元素个数

#加减分
zincrby usrscore -50 h1

 

三.事务

multi
 ...
exec

 

四.生存时间

# 只有set操作会影响生存时间
# 设置过期时间
set name tom
expire name 10
expireat name 时间戳

# 剩余过期时间
ttl name

# 毫秒级
pexpire name 3000
pexpireat name 毫秒时间戳

 

如何限制redis的最大内存使用和删除策略 

 

五.排序

  sort命令

六.消息通知

    1.队列:

      好处:松耦合,易扩展

      实现:   

# 伪代码
lpush tasks t1

loop
    task = rpop tasks
    if task
        exec task
    else
        wait 1 second

 

    优先级实现:

/**
* 伪代码 * brpop 是一个会阻塞的命令,可以接受多个键 最后一个参数表示超时时间,0则不超时 * 如果三个任务键都没有数据,程序会一直阻塞,一旦其中有一个键有数据,程序就会执行,此特性可以实现优先级。那个任务要优先执行,就推送一下,程序就会立刻执行那个任务
*/ lpush one_tasks t1 lpush two_tasks t2 lpush three_tasks t3 loop task = brpop one_tasks two_tasks three_tasks 0 exec task

 

    2.发布/订阅:

# redis实例---发布
publish channel.a hihihi

#redis实例---订阅
subscribe channel.a

 

七.管道

八.管理(持久化 主从 管理工具 安全)

posted @ 2017-04-15 10:11  涛涛taotao  阅读(180)  评论(0编辑  收藏  举报