Redis的安装
我用的系统是Ubuntu 16.04.1 LTS, 关于windows的安装就不说了
# 更新源$ sudo apt-get update# 安装$ sudo apt-get install redis-server
# 启动$ redis-server
# 启动之后再打开一个终端,连接redis服务$ redis-cli
# 127.0.0.1是客户端ip, 6379是服务端口# 我们发送一个 ping,如果返回PONG表示服务器正常127.0.0.1:6379> pingPONGRedis的数据类型
Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(Sorted Set:有序集合)
关于这五中数据类型的操作,因为很多我都用不到,所以不是很内容不是很全面还请见谅,下面我们从字符串开始一一说
String(字符串)
这个String(字符串)是Redis五中数据类型中最基本的数据类型,也是最简单的一个,它是二进制安全的,它可以包含任何数据,
如jpg、序列化的数据…不过它的容量也是有限度的,String的Value值最大可以存储512MB
Redis的set是string类型的无需集合集合通过哈希表表现的, 所以添加、删除、查找复杂度都是0(1)
# 添加一个string元素到key对应的set集合中,SET key value
# 输出一个set集合GET key
# 自增+1INCY key
# 自减-1DECY key
# 自定义自增+5INCYBY key 5
# 自定义自减-5DECYBY key 5
# 批量增加 setMSET key value [key value]...List(列表)
List它是链表而不是数组,这意味着list的插入和删除操作会非常的话,时间复杂度为0(1)但是索引定位很慢,时间复杂度为0(n)
# 向列表的左边插入LPUSH books value
# 输出 lpush(value)LPOP key
# 向列表的右边插入RPUSH key key key
# 输出 rpush(value)RPOP key
# 输出 rpush(value)值的数量(不是具体值)LLEN key
# 输出列表内容(status/stop 可以理解为 0 -1索引)LRANGE key status/stop
# 清除列表内容LTRIM key status/stopHash(哈希)
Hash是一个string类型的fieid和value的映射表,Hash特别适合存储对象,Hash结构用户信息,不同于字符串一次性需要全部序列化整个对象,Hash可以对用户结构中的每个字段单独存储。
这样我们需要获取用户信息时,可以进行部分获取。如果以字符串形势保存用户信息的话,就只能一次性全部读取这样就会失效浪费流量。
# 创建一个 Haet值HAST key fieid value
# 获取一个 HestHGET key fieid
# 更改 Hast值(也就是在创建的基础上重新赋值)HAST key fieid value
# 批量添加HMSET drinks milk 'value' tea 'value'
# 输出 HastHGETALL drinks
# 自增+5HINCRBY drinks amount 5
# 自减-5HINCRBY drinks amount -5
# 删除多个 Hash字段HDEL drinks [fieid] [fieid]Set(集合)
Set它的内部的键值对无序的唯一的,它的内部实现相当于一个特殊的字典,字典中所有的value都是一个值Null。
Set结构可以用来存储活动中奖的用户ID,因为有去除功能,可以保证同一个用户不会中两次!
# 添加两个集合SADD key meber meber
# 输出一个集合SMEMBERS key
# 查询集合中,如果存在返回 1,否则返回 0SISMEMBER key meber
# 在key集合中删除指定的元素或多个元素SREM key meber
# 返回一个集合与给定集合的差集元素SDIFF key key
# 移除集合中的指定 key 的一个或多个随机元素,并返回移除的元素SPOP kecy count
# 交集,返回给定所有定集合的交集SINTER key key
# 并集,返回一个集合的全部成员,该集合是所有给定集合的并集SUNION key keySorted Set(有序集合)(重点!)
Zset保证了内部的唯一性,另一方面它可以给每个value赋予一个score,代表value的排序权重。
Zset可以用来存粉丝列表,value值是粉丝的用户ID,score是关注事件,我们可以对粉丝列表按照关注时间进行排序。
Zset也可以用来存储学生成绩,value是学生ID,score是学生考试成绩,我们可以对成绩按分数进行排序就可以得到它们的名字。
# 添加一个有序集合,30是数量,person是人数(添加也可以用于修改)ZADD key 30 person
# 查看有序集合成员数量ZCARD items
# 查看有序集合成员值(0 和 1 是索引)ZRANGE key 0 1
# 查看有序集合成员值和名字,默认从小到大排序显示ZRANGE key 0 -1 withscores
# 查看有序集合,成员值和名字,从大到小排序ZREVRANGE key 0 -1 withsores
# 查看 member的值ZSCORE key member
# 查看最小值和最大值之间的 member值ZRANGEBYSCORE key min max
# 查看负无穷 - 2000之间的 member值ZRANGEBYSOORE key -inf 2000
# 查看正无穷 - 2000之间的 member值ZEANGEBYSOORE key inf 2000
# 批量删除有序集合ZREM key member memberRedis通用操作
过期时间
Redis所有的数据结构都可以设置过期时间,时间到了,Redis会自动删除相应的对象。需要注意的是过期是以对象为单位,比如一个Hash结构的过期,而不是其中的某个key。
# 设置 5 秒后数据过期,成功返回 1,否则 0#(不会删除 key,只会删除 vlaue值)EXPIRE key 5
# 查看过期时间TTL key
# 失效过期时间SETEX key secods value事务
# 事务,当事务开启时,所有的命令都会延迟执行MULTI
# 执行所有延迟命令EXEC回滚
# 回滚,回滚上一个操作前的状态(事务期间不支持回滚)DISCARD这些都是这段时间记的笔记,全打出来了好累…不过辛苦的劳动得到了心理上的满足,很舒服,这五个Redis有序集合中我觉得 Sorted Set(有序集合)比较重要,
需要多加练习,而Set(集合)是我的弱项也是需要多加练习。
年后一直没发过什么博客,一直在忙着练习面向对象的项目,同时也在学习封装自己的MVC框架!本篇文章就到这里吧!Bai!