Redis安装与数据类型

数据类型分类

存储数据类型分类

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

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

  • sql结构化数据库
    里面存储的数据类型是结构化数据。(别称关系型数据库)
    一个结构化数据库,创建在关系模型基础上
    一般面向于记录
    包括Orcale、MySQL、SQL Server、 Microsoft Access、DB2等
  • nosql非结构化数据库
    里面存储的数据类型是非结构化数据。(别称非关系型数据库)
    除了主流的关系型数据库外的数据库,都是非关系型数据库
    包括Redis、MongBD、Hbase、CouhDB

非关系新数据库产生背景

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

Redis简介

Redis基于内存运行并支持持久化
采用key-value(键值对)的存储形式

优点
具有极高的数据读写速度
支持丰富的数据类型
支持数据的持久化
原子性
支持数据备份

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

Redis与Memcached差别

                 Memcached                   Redis
类型            Key-value数据库           Key-value数据库
过期策略             支持                      支持
数据类型          单一数据类型               五大数据类型
持久化              不支持                     支持
主从复制            不支持                      支持  
虚拟内存            不支持                      支持

Redis安装

tar xf redis-5.0.4.tar.gz
cd redis-5.0.4/
make
make PREFIX=/usr/local/redis install
ln -s /usr/local/redis/bin/* /usr/bin/
cd redis-5.0.4/utils/
./install_server.sh
 /usr/local/redis/bin/redis-server
Port : 6379
Config file : /etc/redis/6379.conf 配 置 文 件 路 径 \color{red}{配置文件路径}配置文件路径
Log file : /var/log/redis_6379.log 日 志 文 件 路 径 \color{red}{日志文件路径}日志文件路径
Data dir : /var/lib/redis/6379 数 据 文 件 路 径 \color{red}{数据文件路径}数据文件路径
Executable : /usr/local/redis/bin/redis-server 可 执 行 文 件 路 径 \color{red}{可执行文件路径}可执行文件路径
Cli Executable : /usr/local/bin/redis-cli 客 户 端 命 令 工 具 \color{red}{客户端命令工具}客户端命令工具

Redis命令

[root@server6 ~]# /etc/init.d/redis_6379 stop关 闭 \color{red}{关闭}关闭
Stopping …
Waiting for Redis to shutdown …
Redis stopped
[root@server6 ~]# /etc/init.d/redis_6379 start开 启 \color{red}{开启}开启
Starting Redis server…
[root@server6 ~]# /etc/init.d/redis_6379 restart重 启 \color{red}{重启}重启
Stopping …
Waiting for Redis to shutdown …
Redis stopped
Starting Redis server…
[root@server6 ~]# /etc/init.d/redis_6379 status查 看 状 态 \color{red}{查看状态}查看状态
Redis is running (62607)

安装完成

可通过Redis的服务控制脚本/etc/init.d/redis_6379来对Redis服务进行控制,如停止Redis服务,启动Redis服务,重启Redis服务,查看Redis运行状态

netstat -anpt | grep redis   查看端口
/etc/init.d/redis_6379 stop   停止Redis服务
/etc/init.d/redis_6379 start    启动Redis服务
netstat -anpt | grep redis 

redis-cli命令行工具

Redis数据库系统也是一个典型的C/S(客户端/服务器端)架构的应用,要服务Redis数据库需要使用

redis-cli 命令行工具

Redis 数据库系统也是一个典型的C/S(客户端/服务器端)架构的应用,要访问Redis数据库需要使用专门的客户端软件。Redis服务的客户端软件就是其自带的redis-cli命令行工具。使用redis-cli连接指定数据库,连接成功过后会进入提示符为“远程主机IP地址: 端口号>”的数据库操作环境。用户可以输入各种操作语句对数据库进行管理。如执行ping命令可以检测redis服务是否启动。

在进行数据库连接操作时,可以通过选项来指定远程主机上的Redis数据库,
命令语法
redis-cli -h host -p port -a password
其中, -h指定远程主机、 -p指定Redis服务的端口号、-a 指定密码。若不添加任何选项表示,连接本机上的 Redis数据库;若未设置数据库密码可以省略-a选项。

编辑配置文件

[root@server1 ~]# vi /etc/redis/6379.conf   
[root@server1 ~]# /etc/init.d/redis_6379 stop  停止Redis服务
[root@server1 ~]# /etc/init.d/redis_6379 start  启动Redis服务
[root@server1 ~]# redis-cli -h 20.0.0.11 -p 6379  连接redis数据库

添加
bind 20.0.0.11 127.0.0.1  
默认只连接127.0.0.1,允许接收本机地址,绑定地址

连接上Redis数据库进行五种类型的服务配置操作

应用配置五种数据类型

String(字符串)

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

[root@server1 ~]# redis-cli -h 20.0.0.11 -p 6379
20.0.0.11:6379> set a 6   设置a的值为6
OK
20.0.0.11:6379> get a      获取a值 输出返回13
"6"
20.0.0.11:6379> type a     查看a的状态类型
string
20.0.0.11:6379> incr a     自增长 +16+1=7 
(integer) 7                integer:整数
20.0.0.11:6379> get a      获取a值的为7
"7"
20.0.0.11:6379> decr a      自减 -1 7=6
(integer) 6
20.0.0.11:6379> get a
"6"
20.0.0.11:6379> incrby a 7    设置增值为7 6+7=13
(integer) 13
20.0.0.11:6379> decrby a 10   设置下降值为10 13-10=3
(integer) 3

Hash(哈希)

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

20.0.0.11:6379> Hset hash1 key1 a		设置字段key1为a
(integer) 1
20.0.0.11:6379> hset hash1 key1 aa  	设置字段key1为aa覆盖
(integer) 0
20.0.0.11:6379> Hset hash1 key2 b		设置字段key2为b
(integer) 1
20.0.0.11:6379> Hset hash1 key3 c		设置字段key3为c
(integer) 1
20.0.0.11:6379> Hmget hash1 key1 key2 key3
1) “aa”
2) “b”
3) “c”

20.0.0.11:6379> Hset hash1 field1 a1 field2 b2		存入多个字段,分别为field1为a1,field2为a2
(integer) 2
20.0.0.11:6379> Hmget hash1 field1 field2
1) “a1”
2) “a2”

List(列表)

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

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

20.0.0.11:6379> lpush list1 1   左边输入第一位数字,数值为1
(integer) 1
20.0.0.11:6379> lpush list1 2
(integer) 2
20.0.0.11:6379> lpush list1 3
(integer) 3
20.0.0.11:6379> lpush list1 3   左边输入第4位数字,数值为3
(integer) 4
20.0.0.11:6379> lpush list1 4
(integer) 5
20.0.0.11:6379> lpop list1     左边输出左边排列第一位数字数值为4
"4"
20.0.0.11:6379> rpop list1     右边输出右边排列第一位数字数值为1
"1"
20.0.0.11:6379> llen list1     输出列表长度为3
(integer) 3
20.0.0.11:6379> lrange list1 0 4         列出所有list1中的值     
1) "3"
2) "3"
3) "2"

Set(无序集合)

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

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

20.0.0.11:6379> sadd set1 10   添加键值10,10未存在,添加成功输出返回1
(integer) 1
20.0.0.11:6379> sadd set1 20   添加键值20,20未存在,添加成功输出返回1
(integer) 1
20.0.0.11:6379> sadd set1 20  添加键值20,20已存在,添加失败输出返回0
(integer) 0
20.0.0.11:6379> sadd set1 30
(integer) 1
20.0.0.11:6379> scard set1   查看set数据中的键值个数为3个
(integer) 3
20.0.0.11:6379> sismember set1 40  
(integer) 0
判断键值40是否存在与set数据中,不存在输出返回0
20.0.0.11:6379> sismember set1 10
(integer) 1
判断键值10是否存在与set数据中,存在输出返回1
20.0.0.11:6379> sismember set1 20
(integer) 1
20.0.0.11:6379> sismember set1 30
(integer) 1
20.0.0.11:6379> srem set1 10    删除键值10,成功输出返回1
(integer) 1
20.0.0.11:6379> sismember set1 10
(integer) 0
判断键值10是否存在与set数据中,不存在输出返回0

zset(sorted set:有序集合)

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

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

20.0.0.10:6379> zadd zset1 1 val1   添加键值,分数为1,成员val1
(integer) 1
20.0.0.10:6379> zadd zset1 3 val2  添加键值,分数为3,成员val2
(integer) 1
20.0.0.10:6379> zadd zset1 2.4 val3
(integer) 1
20.0.0.10:6379> zadd zset1 7 val4
(integer) 1
20.0.0.10:6379> zadd zset1 4 val5
(integer) 1
20.0.0.10:6379> zadd zset1 1.3 val6
(integer) 1
20.0.0.10:6379> zadd zset1 1.3 val66
(integer) 1
20.0.0.10:6379> zrangebyscore zset1 0 10  只显示成员的排序
1) "val1"
2) "val6"
3) "val66"
4) "val3"
5) "val2"
6) "val5"
7) "val4"
20.0.0.10:6379> zrange zset1 0 10 withscores  连带分数进行排序
 1) "val1"
 2) "1"
 3) "val6"
 4) "1.3"
 5) "val66"
 6) "1.3"
 7) "val3"
 8) "2.3999999999999999"
 9) "val2"
10) "3"
11) "val5"
12) "4"
13) "val4"
14) "7"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值