redis的安装和使用
Redis 简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 是属于非关系型数据库
1.数据比模型较简单
2.需要灵活性更强的IT系统
3.对数据库性能要求较高
4.不需要高度的数据一致性
5.对于给定的key,比较容易映射复杂值的环境
Redis简介
优点:
对数据高并发读写
对海量数据的高效率存储和访问
对数据的可扩展性和高可用性
缺点:
redis(ACID处理非常简单)
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
无法做到太复杂的关系型数据库模型
Redis持久化两种机制rdb和aof
Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
redis的安装
redis的服务端安装
gcc编译c的,因为redis是c编写的,所以我们先安装下gcc、
yum install gcc-c++
下载redis压缩包 并解压
reids的各个版本的下载地址:
http://download.redis.io/releases/
第一种方式是 在线安装
yum -y install wget
wget http://download.redis.io/releases/redis-5.0.2.tar.gz
第二种是直接去reis官网下载离线安装包,上传到Linux中,推荐使用第二种 (在网速不是很快的情况下,我百度云中已经提供了安装包)。
Tar -xvf redis-5.0.2.tar.gz(解压)
编译
cd redis-5.0.2/(进入目录)
Make(编译)
修改配置文件 redis.conf
redis-5.0.2 /redis.conf
将配置文件中的 daemonize 修改成 yes 。这是 开启守护进程,不开启的话,不能做其他操作
#daemonize no
daemonize yes
启动 redis
可以操作如下(指定redis.conf)
./src/redis-server redis.conf
使用reids客户端工具 reids-cli 测试是否成功
./src/redis-cli (使用redis)
连接上后运行ping 命令。如果输出如下结果就代表成功了:
redis-desktop-manager安装
安装比较简单,点击安装文件 下一步 下一步就好了,这里主要讲配置,我们使用客户端工具连接肯定是成不了的。要进行一些配置才能成功
# 这里是代表只能用本机连接 #bind 127.0.0.1 #注释这一行(69行) #找到下面这一行并去除注释,并添加密码(396行) #requirepass foobared #修改前 requirepass root #修改后
注:配置完成密码后,以后登录就密码按下面的命令进行登录
./redis-cli -h 127.0.0.1 -p 6379 -a root
开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
更新防火墙规则
firewall-cmd --reload
重启redis或Linux
service redis-server restart
或
reboot
测试使用客户端工具连接
下面代表连接成功:
当我们连接上后就可以进行一些操作,这里就简单演示一些查看指定数据库的 key(如果你刚刚安装,数据库中是没有数据的):
redis 基本操作
如果设置了密码,就得先登录
不然会出现以下错误
正确的应该是
auth 是自己设置的密码
说明: 这里是使用 redis-cli 进行命令行操作
redis db0-15 的概念
redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?就相当于mysql数据库,不同的应用程序数据存储在不同的数据库下。
redis下,数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接到数据库0。redis配置文件中下面的参数来控制数据库总数:
databases 16
1
可以通过下面的命令来切换到不同的数据库下
select 2
1
随后,所有的命令将使用数据库3,知道你明确的切换到另一个数据库下。
每个数据库都有属于自己的空间,不必担心之间的key冲突。
不同的数据库下,相同的key取到各自的值。
flushdb命令清除数据,只会清除当前的数据库下的数据,不会影响到其他数据库。
flushall命令会清除这个实例的数据。在执行这个命令前要格外小心。
redis的数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)
及zset(sorted set:有序集合)。
String(字符串)
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
Redis字符串(String)
# set key //保存
# get key //获取
# type key //查看类型
# keys *或keys key //查看所有或者指定的key
Redis哈希(Hash)
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
# hset key field1 value1 [field2 value2] #同时将多个field-value设置到哈希表key中
# hget key field #获取指定的字段值
# hdel key field #删除指定的字段值
# hgetall key #查询指定key的所有字段
# hexists key field #查询指定key中的字段是否存在
# hlen key #获取指定key中的长度
Redis列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
# lpush key value1 value2 value3 #将一个或多个值插入到列表头部
# llen key #获取列表的长度
# lindex key index #根据索引获取列表中的元素
# lrange key start sop #查看指定范围内的元素
Redis集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
# sadd key value1 [value2] #向集合添加一个或多个元素
# scard key #获取集合中的元素数量
# sscan key cursor [MATCH pattern] [COUNT count] #迭代集合中的元素
# exists key #是否存在
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
zadd key score member
![](https://img2018.cnblogs.com/blog/1691548/201910/1691548-20191012190635254-886033343.png)