Redis笔记(安装与数据类型) |
|
這些年來
L0
• 2020-03-15 • 回复 0 • 只看楼主
• 举报
|
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> pingPONG
Redis的数据类型
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# 批量增加 set MSET 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/stop
Hash(哈希)
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 key
Sorted 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 member
Redis通用操作
过期时间
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!