概述&安装

Redis是一个基于内存的Key-Value高性能数据库。其只要特点:

  • Redis是基于内存的,所以性能极高,它能读的速度是110000次/s,写的的速度是81000次/s
  • 丰富的数据类型,支持Strings, Lists, Hashes, Sets, Ordered Sets数据结构
  • 支持持久化,RDB和AOF
  • 支持master-slave数据备份
  • Redis所有操作都是原子性的
  • 还支持很多特性,如publish/subsribe,通知,key过期等

使用场景:

  • 缓存,对于读取频率很高的数据,使用缓存
  • 时效性的数据
  • 计数器,如点赞、应用数、资源数
  • 社交列表,如用户点赞表,用户收藏表,用户关注列表
  • 排行
  • 交集,并集,差集
  • 消息队列
  • 单线程可以作为分布式锁

安装

# ubuntu安装
$ sudo apt-get install redis-server
$ redis-server # 启动
$ redis-cli # 命令行客户端
$ redis 127.0.0.1:6379> ping # 查看是否启动
$ PONG
$ > shutdown

配置

配置文件详解

基本命令

# string
$ reids-cli -h 127.0.0.1 -p 6379 -a password
$ > auth password
$ select 3
$ keys *
$ scan 0 match * count 10000
$ scan 0 match video:* count 10000

# string
$ SET name 'wcg' # OK
$ GET name  # 'wcg'
$ set name '1' # OK
$ incr name # (integer) 3 自动将字符串转为数值

# list 底层是链表
$ lpush mylist '1' # (integer) 1 返回元素个数
$ rpush mylist '2'
$ lrange mylist 0 1 # 1, 2
$ lrange mylist 0 -1

# set
$ sadd myset 'one' # (integer) 1
$ sadd myset 'two'
$ smembers myset # 'one' 'two' 列出所有元素
$ sismember myset 'one' # 判断是否存在,1, 0
$ sumion myset yourset # 对两个集合求并集

# zset
$ zadd myzset 1 apple # (integer) 1
$ zadd myzset 2 banana # (integer) 1
$ zrange myzset 0 -1 # 'apple', 'banana'
$ zrange myzset 0 -1 withscores # 'apple' '1' 'banana' '2'

# hash
$ HMSET user:001 username username wcg password 123 age 24 # OK
$ HGETALL user:001
$ HSET user:001 password 12345

# 发布订阅
$ SUBSCRIBE redisChat
# 另一个终端,发布信息
$ PUBLISH redisChat "wcg is a good man."

# 事务 MULTI, EXEC, DISCARD, WATCH
$ MULTI #标记事务开始
$ ... #一系列命令
$ EXEC #执行

# 数据备份
$ SAVE # dump.rdb

参考

https://code.ziqiangxuetang.com/redis/redis-intro.html
https://my.oschina.net/javagg/blog/471433