redis安装与数据类型

数据类型分类

存储数据类型分类:

结构化数据:可以用过二位表格形式表述这个数据
非结构化数据:不方便以二维表格形式表述的这种类型的数据

根据不同种存储数据类型分类分成两种不同类型的数据库:

  1. sql结构化数据库:
    里面存储的数据类型是结构化数据。(别称关系型数据库)
    一个结构化数据库,创建在关系模型基础上
    一般面向于记录
    包括Orcale、MySQL、SQL Server、 Microsoft Access、DB2等

  2. nosql非结构化数据库:
    里面存储的数据类型是非结构化数据。(别称非关系型数据库)
    除了主流的关系型数据库外的数据库,都是非关系型数据库
    包括Redis、MongBD、Hbase、CouhDB

非关系新数据库产生背景

High performance 对数据库高并发读写需求
Huge Storage对海量数据高效存储与访问需求
High Scalability对数据库高可扩展性与高可用性需求

Redis简介

Redis基于内存运行并支持持久化
采用key-value(键值对)的存储形式
优点
具有极高的数据读写速度
支持丰富的数据类型
支持数据的持久化
原子性
支持数据备份

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

类型简介特性场景
String(字符串)二进制安全可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M
Hash(字典)键值对集合,即编程语言中的Map类型适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)存储、读取、修改用户属性
List(列表)链表(双向链表)增删快,提供了操作某一段元素的API1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列
Set(集合)哈希表实现,元素不重复1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐
Sorted Set(有序集合)将Set中的元素增加一个权重参数score,元素按score有序排列数据插入集合时,已经进行天然排序1、排行榜 2、带权重的消息队列

Redis安装

  1. 上传文件、解压

     tar xf redis-5.0.4.tar.gz
    
  2. 编译安装

     cd redis-5.0.4/
     make
     make PREFIX=/usr/local/redis install
    
  3. 建立软链接

     ln -s /usr/local/redis/bin/* /usr/bin/
    
  4. 执行脚本

     cd redis-5.0.4/utils/
    
     ./install_server.sh
      /usr/local/redis/bin/redis-server
    

在这里插入图片描述

5.Redis命令

/etc/init.d/redis_6379 stop关 闭 \color{red}{关闭}关闭
Stopping …
Waiting for Redis to shutdown …
Redis stopped
/etc/init.d/redis_6379 start开 启 \color{red}{开启}开启
Starting Redis server…
/etc/init.d/redis_6379 restart重 启 \color{red}{重启}重启
Stopping …
Waiting for Redis to shutdown …
Redis stopped
Starting Redis server…
/etc/init.d/redis_6379 status查 看 状 态 \color{red}{查看状态}查看状态
Redis is running (62607)
vi /etc/redis/6379.conf

在这里插入图片描述

	redis-cli -h 20.0.0.18 -p 6379

数据类型

1. String(字符串)

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

实例:set 键 值 设置键值对 get 键 获取键的值

20.0.0.18:6379> Set string1 6
ok
20.0.0.18:6379>Get string1
“6”
20.0.0.18:6379>Incr string1
(integer) 7
20.0.0.18:6379> Decr string1
(integer) 6
20.0.0.18:6379> Decrby string1 3
(integer) 3
20.0.0.18:6379>Incrby string1 5
(integer) 8
20.0.0.18:6379>

2. Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

实例:Hset:添加hash数据 hget:获取hash数据 hmget:获取多个hash数据

20.0.0.18:6379> Hset hash1 key1 a
(integer) 1
20.0.0.18:6379> Hset hash1 key2 b
(integer) 1
20.0.0.18:6379> Hset hash1 key3 c
(integer) 1
20.0.0.18:6379> Hmget hash1 key1 key2 key3

  1. “a”
  2. “b”
  3. “c”

20.0.0.18:6379> Hset hash1 field1 a1 field2 b2
(integer) 2
20.0.0.18:6379> Hmget hash1 field1 field2

  1. “a1”
  2. “b2”
    20.0.0.18:6379>

3. List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

实例:lpush:从左边推入值 lpop:从左边弹出值 rpush:从右边推入值 rpop:从右边弹出值 llen:查看某个list数据类型的长度

20.0.0.18:6379> Lpush list1 4
(integer) 1
20.0.0.18:6379> Lpush list1 5
(integer) 2
20.0.0.18:6379>Lpush list1 6
(integer) 3
20.0.0.18:6379>Llen list1
(integer) 3
20.0.0.18:6379>Rpop list1
“4”
20.0.0.18:6379> Llen list1
(integer) 2

20.0.0.18:6379> Lpush list2 4
(integer) 1
20.0.0.18:6379> Lpush list2 5
(integer) 2
20.0.0.18:6379>Lpush list2 6
(integer) 3
20.0.0.18:6379>Lpop list2
“6”
20.0.0.18:6379>Lpop list2
“5”
20.0.0.18:6379> Llen list2
(integer) 1
20.0.0.18:6379>

4. Set(集合)

Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
sadd 命令
添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。

sadd key member
scard:查看set数据中存在的元素个数
sismember:判断set数据中是否存在某个元素
srem:删除某个set数据中的元素

实例:

20.0.0.18:6379> sadd set1 12
(integer) 1
20.0.0.18:6379> sadd set1 13
(integer) 1
20.0.0.18:6379> sadd set1 12
(integer) 0
20.0.0.18:6379> Scard set1
(integer) 2
20.0.0.18:6379> Sismember set1 11
(integer) 0
20.0.0.18:6379> Sismember set1 13
(integer) 1
20.0.0.18:6379>Srem set1 13
(integer) 1
20.0.0.18:6379>Sismember set1 13
(integer) 0
20.0.0.18:6379> Smembers set1

  1. “12”
    20.0.0.18:6379>

5.zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。

zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
使用方法:zadd key score member
zcard:查询
zrang:数据排序

实例:
20.0.0.18:6379>Zadd zset1 1.1 val1
(integer) 1
20.0.0.18:6379> Zadd zset1 2.2 val2
(integer) 1
20.0.0.18:6379> Zadd zset1 3.3 val3
(integer) 1
20.0.0.18:6379>Zadd zset1 3.3 val10
(integer) 1
20.0.0.18:6379> Zcard zset1
(integer) 4
20.0.0.18:6379>Zrangebyscore zset1 0 10

  1. “val1”
  2. “val2”
  3. “val10”
  4. “val3”
    20.0.0.18:6379> Zrange zset1 0 10 withscores
  5. “val1”
  6. “1.1000000000000001”
  7. “val2”
  8. “2.2000000000000002”
  9. “val10”
  10. “3.2999999999999998”
  11. “val3”
  12. “3.2999999999999998”
    20.0.0.18:6379>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值