redis简介
Redis 是一个高性能的key-value数据库。
- Redis可基于内存亦可持久化。
- Redis 支持存储的value类型丰富,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)
- Redis性能极高,读的速度可高达110000次/s,写的速度可高达81000次/s 。
- Redis的所有操作都是原子性的,Redis还支持几个操作合并后的原子性执行。
Redis 下载安装
Redis官方并不支持Windows。 但是,微软针对Win64自己开发了一个windows版的redis并共享到github上。
点击https://github.com/MSOpenTech/redis/releases下载。
选择你喜欢的安装方式,这里我选择压缩版。
安装/解压缩后到redis目录找到redis-server.exe和redis-cli.exe
双击redis-server.exe启动redis服务
双击redis-cli.exe启动客户端,用来访问redis服务。
测试一下,设置x的值为1并获取x。
使用redis
redis使用key-value来存储数据。
set & get
使用set命令设置值,并用get命令获取值。
del
del删除一个key
incr
incr递增一个值,如果key不存在则创造它并初始化值为1
setnx
setnx(set-if-not-exists),如果key不存在才改变值。
expire & ttl
expire设置生存时间,ttl查看剩余时间。
list操作:rpush & lpush & llen & lrange & lpop & rpop
rpush在list末尾添加元素
1234> rpush color "blue" //[bule](integer) 1> rpush color "red" //[bule, red](integer) 2lpush在list开头添加元素
12> lpush color "yellow" //[yellow, bule, red](integer) 3llen查看list长度
12> llen color(integer) 3lrange查看list内容,接受两个参数,开始index和结尾index,如果结尾index为-1,表示直到list末尾。
12345678910111213> lrange color 0 21) "yellow"2) "blue"3) "red"> lrange color 0 11) "yellow"2) "blue"> lrange color 1 21) "blue"2) "red"> lrange color 1 21) "blue"2) "red"lpop移除list第一个元素并返回它
1234567> lpop color"yellow"> llen color(integer) 2> lrange color 0 -11) "blue"2) "red"rpop移除list最后一个元素并返回它
123456> rpop color"red"> llen color(integer) 1> lrange color 0 -11) "blue"
set操作:sadd & srem & sismember & smembers & sunion
set类似list,但是元素没有顺序且只能出现一次。
sadd添加一个元素到set
12345678> sadd superpowers "flight" //["flight"](integer) 1> sadd superpowers "x-ray vision" //["flight", "x-ray vision"](integer) 1> sadd superpowers "reflexes" //["flight", "x-ray vision", "reflexes"](integer) 1> SADD superpowers "flight" //重复添加无效(integer) 0srem从set中移除一个元素
12> srem superpowers "reflexes" //["flight", "x-ray vision"]1sismember测试一个元素是否存在于set,存在返回1,不存在返回0
1234> sismember superpowers "flight"(integer) 1> sismember superpowers "reflexes"(integer) 0smembers查看set所有元素
123> sismember superpowers1) "x-ray vision"2) "flight"sunion联合多个set并返回它们的合集
1234567891011121314> sadd birdpowers "pecking"(integer) 1> sadd birdpowers "flight"(integer) 1> smembers birdpowers1) "pecking"2) "flight"> smembers superpowers1) "x-ray vision"2) "flight"> sunion superpowers birdpowers //无序的 sunion birdpowers superpowers结果一样1) "pecking"2) "flight"3) "x-ray vision"
sorted set操作:zadd zrange
有序集合(sorted set)类似集合,不过它每个元素有一个关联值,通过这个关联值对元素进行排序。
zadd为一个有序集合添加元素
12345678910111213141516> zadd hackers 1940 "Alan Kay"(integer) 1> zadd hackers 1906 "Grace Hopper"(integer) 1> zadd hackers 1953 "Richard Stallman"(integer) 1> zadd hackers 1965 "Yukihiro Matsumoto"(integer) 1> zadd hackers 1916 "Claude Shannon"(integer) 1> zadd hackers 1969 "Linus Torvalds"(integer) 1> zadd hackers 1957 "Sophie Wilson"(integer) 1> zadd hackers 1912 "Alan Turing"(integer) 1zrange类似于lrange,查看sorted set元素。接受两个参数,开始index和结尾index,如果结尾index为-1,表示直到末尾
123456789> zrange hackers 0 -11) "Grace Hopper"2) "Alan Turing"3) "Claude Shannon"4) "Alan Kay"5) "Richard Stallman"6) "Sophie Wilson"7) "Yukihiro Matsumoto"8) "Linus Torvalds"
可以看到元素以年份递增排序。
hash操作:hset & hget & hgetall & hmset & hincrby & hdel
hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
- hset添加值123456> hset user name "tenny"(integer) 1> hset user email "tenny@example.com"(integer) 1> hset user password "cutepanda"(integer) 1
hget获取值
12> hget user name"tenny"hgetall获取所有值
1234567> hgetall user1) "name"2) "tenny"3) "email"4) "tenny@example.com"5) "password"6) "cutepanda"hmset一次性设置多个值
123456789> hmset user1 name "tenny1" password "cutepanda1" email "tenny1@example.com"OK> hgetall user11) "name"2) "tenny1"3) "password"4) "cutepanda1"5) "email"6) "tenny1@example.com"
可以使用hset继续添加或修改
hincrby增加数值型域的值
123456> hset user visits 10(integer) 1> hincrby user visits 1(integer) 11> hincrby user visits 1(integer) 12hdel删除指定的域
12345678> hdel user visits(integer) 1> hdel user age //删除不存在的域返回0(integer) 0> hdel user visits(integer) 0> hincrby user visits 20 //字段不存在则默认设置为0后再执行此增加操作(integer) 20