Redis 安装和数据类型

Redis 安装和数据类型
一、Redis
1、Redis概念
redis 缓存中间件:缓存数据库

nginx web服务

php 转发动态请求

tomcat web页面,也可以转发动态请求

springboot 自带tomcat

数据库不支持高并发,一旦访问量激增,数据库很快就会崩溃

redis的作用:缓存数据库

redis也是一个数据库,不单是一个缓存工具,

redis非关系型数据库,nosql=not only sql 不仅仅是sql

键值对形式

key value

test1=test2

test1=10 数据的类型不是定义好的类型,根据自定义,系统自动识别

test1=10 string

2、Redis简介
redis:远程字典服务器

键值对、开源的、C语言写的nosql数据库

redis基于内存运行,所有的数据不是保存在硬盘,而是内存

持久化————定期或者人为的把数据保存到硬盘

3、Redis的优点
1、极高的读写速度,读速度可以达到110000次/s,81000次/s

2、支持丰富的数据类型,键值对可以定义多种数据类型 string、list、hash、set

3、支持数据持久化,内存当中数据保存到磁盘

4、原子性,redis的所有操作都是原子性的

5、支持主从模式和高可用模式(哨兵模式),以及集群

缓存雪崩、缓存击穿???

4、应用场景
redis基于内存运行的数据库,缓存是他最常用的应用场景

排行榜、计数器、存储关系、实时分析记录、日志系统

6、Redis缓存
缓存是一种用于存储临时数据副本的技术,目的就是提高访问速度和性能

缓存通常位于数据的访问路径上,数据的必经之路,可以不直接访问原始数据的情况下,可以直接获取数据

缓存的应用场景:

web缓存、数据库缓存、对象缓存(大数据应用)

二、Redis安装部署
安装部署redis

systemctl stop firewalld
setenforce 0
cd /opt # 把包拖进来

安装redis的依赖环境
yum install -y gcc-c++ make

tar -xf redis-5.0.7.tar.gz
cd redis-5.0.7
make -j 4

make PREFIX=/usr/local/redis install

cd utils
./install_server.sh
# 默认端口6379
# 注意默认6379后的Please select the redis executable path [] 
/usr/local/redis/bin/redis-server
# Is this ok? Then press ENTER to go on or Ctrl-C to abort. 
按回车  # Installation successful! 表示成功

ln -s /usr/localredis/bin/* /usr/local/bin
netstat -antp | grep 6379

vim /etc/redis/6379.conf
set nu
70行   bind后增加 本机地址192.168.100.11
93行   默认不动(port 6379)
137行  默认不动(daemonize yes)
159行  默认不动(pidfile /var/run/redis_6379.pid)
172行  默认不动(logfile /var/log/redis_6379.log)
wq!

/etc/init.d/redis_6379 restart
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 status

tail -f /var/log/redis_6379.log

# 进入redis的命令
redis-cli -h 192.168.100.11 -p 6379 

三、Redis数据库

# 进入redis的命令
redis-cli -h 192.168.100.11 -p 6379 
-h 指定ip地址
-p 指定端口
-a 密码(没有密码可以不加)
redis-cli 命令行工具
redis-server start stop restart 控制redis的服务状态
redis-benchmark 检查redis的运行效率
redis-check-aof 修复aof持久化的文件
redis-check-rdb 修复rdb持久化的文件

redis-benchmark -h 192.168.100.11 -p 6379 -c 100 -n 10000
# 向redis的主机模拟发送100个并发链接,同时发送十万个请求

redis-benchmark -h 192.168.100.11 -p 6379 -q -d 100
# 模拟存储100个数据包的性能测试

1、Redis数据类型

命令类型
string字符串
list列表
hash散列,键值对集合
set集合 不重复的无序集合
zset集合 有序集合

2、Redis的常用命令

redis-cli -h 192.168.100.11 -p 6379

# 创建键值对   
set 键名 数值  

# 获取键值对的数值     
get 健名        

# 查看当前数据库有多少键值对
keys *

# 查看库当中键值对是否存在
exists 键名
# 存在返回1,不存在返回0

# 查看键值的类型
type 键名

# 如何删除键值对
del 键名 
# 返回1删除1个 返回2删除2个 可以同时删除多个

# 修改键的名字
rename 旧名 新名

# 如何给redis添加密码
config set requirepass 123456
# 添加密码

auth 123456
# 密码登录

config get requirepass
auth 123456

3、Redis数据类型操作
3.1 string类型
是redis的基础类型,最大能够存储512MB的数据(数字、图片等待默认都是string)

append 
# 追加
如何该键不存在,自动添加打印键值长度,该键存在,对已有键进行追加,并显示长度

strlen 名字  # 获取值的长度

incr 名字   # 值追加1

decr 名字   # 值减少1

incrby 名字 数值  # 指定加多少

decrby 名字 数值 数值 # 指定减多少

# 增加生命周期  
setex 名 时间(秒) 值

# 查看生命周期
ttl 名

# 查看库里面的键值对有几个
dbsize

# 查看Redis有多少个库
config get databases 
# 第一个库是零,每一个库都是独立的,互相不影响

# 换库
select 序列号 

# 数据迁移(移库)
move 名 序列号

# 清空库 和  # 清空所有的库  !!!慎用!!!
flushdb 和  flushall

# 如何一次创建多个键值对
mset 键名1 数值 键名2 数值 键名3 数值

#一次性查看多个键值对  mget
mget 键名1 键名2 键名3 键名4

3.2 list类型
列表类型

# 创建list类型
lpush 名 值
lpush mykey a b c d

# 查看数值
lrange 名 0 -1 
# 0是起始位。-1是列表当中的最后一位  #显示从右往左

lrange 名 0 2
# 起始位向后移两位  # 数字表示索引,即代表索引位置

# 怎么在列表里面添加元素
lpush 键名 数值

# 移除数据
lpop 名   # 从右往左移除数据

# 查看键名有多少个元素
llen 名

# 指定删除
lrem 名 数字 数值  # 数字表示要删除几个

# 如何用索引的方式打印指定的位置(数字表示位置、从右往左)
lindex 名 数字 

# 根据索引的位置对指定位置进行替换
lset 名 数字 数值
# 把数字的位置的数值替换成数值

# 怎么在指定值的前后进行替换
linsert 名 before 数值1 数值2
# 在数值1的前面插入数值2

linsert 名 after 数值1 数值2
# 在数值1的后面插入数值2

# 创建数值对   从左往右
rpush 名 数值
lpush mykey a b c d

# 移除从右往左
rpop 名

3.3 hash类型
hash类型:散列,用来存储对象,把对象类别和ID构成键名

hash类型存储的空间很小,占用的内存和持久化后磁盘空间都很少

hash是一个键值对,包含多个对象个对象的值

myhash就是一个hash值,一个hash值可以存储4294967295个键对值

# 创建hash类型的键
hset 名 对象名 数值
hset myhash id1 1 id2 2 id3 3

# 获取id值
hget myhash id

# 查看hash的键对值有几个
hlen myhash

# 删除  #只能一个一个删,键名后面必须要加对象
hdel myhash id

# 创建多个
hmset myhash id1 1 id2 1

# 获取多个值
hmget mhash id1 id2

# 查看所有键值对和里面数值
hgetall myhash

# 只看键对名
hkeys myhash

# 只看键值对里面的数值
hvals myhash

# 添加键值对和数值  
hsetnx myhash id4 4

3.4 set类型
set集合:无序集合,元素的类型只能是string,在无序集合当中,元素具有唯一性,不允许重复

应用场景:可以用set的数据来追踪唯一性的数据,比如:IP地址。或者根据客户的ip区分不同客户购买的同一产品

# 创建键值对
sadd myset a b b c

# 查看
smembers myset

# 添加  # 表中存在的不添加,实际添加数会显示
sadd myset a d e

# 查看集合当中的元素有几个
scard myset

# 从当前集合随机获取一个值
srandmember myset

# 随机删除集合当中任意值
spop myset

# 删除指定值
srem myset a

srem myset b c

# 把myset当中的a移动到myset2当中
smove myset myset2 a

3.5 zset类型
zset集合:有序集合,sorted set,元素类型都是string,元素唯一,不能重复,每个元素都会关联一个double类型的分数score(表示权重),通过权重的大小进行排序,权重可以相同

# 创建
zadd myzet 1 "one"
zadd myzet 2 "two" 3 "three"

# 查看成员   # one two three
zrange myzet 0 -1

# 查看成员,按照权重大小进行排序   # 权重 1 2 3
zrange myzet 0 -1 withscores

# 权重值可以相同,但是成员不可以相同

# 获取权重的范围是大于等于2小于等于5   # 展示结果是成员
zrangebyscore myzet 2 5

# 排序  # 索引倒序
zrevrange myzet 1 3

3.6 数据类型总结
string 基本类型

list 列表

hash 一个hash可以存储多个对象和对象值,对象名不可重复

set 无序集合 没有重复 没有权限 string

ash

创建
zadd myzet 1 “one”
zadd myzet 2 “two” 3 “three”

查看成员 # one two three
zrange myzet 0 -1

查看成员,按照权重大小进行排序 # 权重 1 2 3
zrange myzet 0 -1 withscores

权重值可以相同,但是成员不可以相同
获取权重的范围是大于等于2小于等于5 # 展示结果是成员
zrangebyscore myzet 2 5

排序 # 索引倒序
zrevrange myzet 1 3


### 3.6 数据类型总结

string  基本类型

list 列表

hash 一个hash可以存储多个对象和对象值,对象名不可重复

set 无序集合 没有重复 没有权限 string

zset 有序集合 没有重复 按照权重进行排序 string

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值