redis部署及数据类型

redis简介

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

优点:

(1)具有极高的数据读写速度
(2)支持丰富的数据类型
(3)支持数据的持久化(内存写到磁盘、二进制日志)
(4)原子性
(5)支持数据备份

数据类型与数据库分类

存储数据类型分类

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

数据库类型分类:

sql结构化数据库:里面存储的数据类型是结构化数据。(关系型数据库)
nosql非结构化数据库:里面存储的数据类型是非结构化数据。(非关系型数据库)

非关系型数据库产生背景:

1、对数据库高并发读写需求
2、对海量数据高效存储与访问需求
3、对数据库高可拓展性与高可用性需求

redis下载

wget https://download.redis.io/releases/redis-5.0.7.tar.gz #可更改版本

安装部署redis

[root@server1 ~]# yum -y install gcc gcc-c++ make #安装编译环境

[root@server1 ~]# tar zxvf redis-5.0.7.tar.gz 

[root@server1 redis-5.0.7]# make #因分装化,直接安装
[root@server1 redis-5.0.7]# make PREFIX=/usr/local/redis install #指定命令文件存放位置并安装

[root@server1 redis-5.0.7]# cd /usr/local/redis/
[root@server1 redis]# ls
bin
[root@server1 redis]# cd bin/
[root@server1 bin]# ls
redis-benchmark  redis-check-rdb  redis-sentinel
redis-check-aof  redis-cli #连接终端        redis-server

[root@server1 redis-5.0.7]# cd utils/ #进入redis工具包
[root@server1 utils]# ls
build-static-symbols.tcl  hashtable          redis_init_script.tpl
cluster_fail_time.tcl     hyperloglog        redis-sha1.rb
corrupt_rdb.c             install_server.sh #配置一些文件的存放路径 releasetools
create-cluster            lru                speed-regression.tcl
generate-command-help.rb  redis-copy.rb      whatisdoing.sh
graphs                    redis_init_script

[root@server1 utils]# ./install_server.sh #直接执行
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379]  #默认端口6379,回车
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] #默认配置文件路径,回车
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] #默认日志文件路径,回车
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] #实例数据存放位置,回车
 Selected default - /var/lib/redis/6379
Please select the redis executable path [] /usr/local/redis/bin/redis-server
 #拓展文件路径,需要自己写,默认提供路径为/usr/local/bin/redis-server,更改为/usr/local/redis/bin/redis-server
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/redis/bin/redis-server
Cli Executable : /usr/local/redis/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort. #回车
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

[root@server1 utils]# cd /etc/redis/ #查看配置文件
[root@server1 redis]# ls
6379.conf

[root@server1 redis]# ln -s /usr/local/redis/bin/\* /usr/local/bin/ #注:\**,将redis命令软链接到系统命令下,便于执行

[root@server1 redis]# netstat -anpt | grep 6379 #查看状态,已启用
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      12450/redis-server  
[root@server1 redis]# /etc/init.d/redis_6379 stop #关闭
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
[root@server1 redis]# netstat -anpt | grep 6379 #变为WAIT状态
tcp        0      0 127.0.0.1:6379          127.0.0.1:50758         TIME_WAIT   -    

[root@server1 redis]# /etc/init.d/redis_6379 restart #重启redis
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...
[root@server1 redis]# redis-cli #不指端口可直接登录,为本地登录
127.0.0.1:6379> 

[root@server1 redis]# vim /etc/redis/6379.conf 
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #此行后修改
bind 127.0.0.1 20.0.0.11 #127.0.0.1添加监听地址

[root@server1 redis]# /etc/init.d/redis_6379 restart #重启
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...

[root@server1 redis]# redis-cli -h 20.0.0.11 -p 6379 #指定IP端口可登录,-指定IP
20.0.0.11:6379> 
20.0.0.11:6379> help @list #查看list信息
20.0.0.11:6379> help @set #查看set信息
###20.0.0.11:6379> set key value [expiration EX seconds|PX milliseconds] [NX|XX] #输入set会有提示信息###

设置键 值

20.0.0.11:6379> set lcx 123 
OK
20.0.0.11:6379> set abc 321
OK
20.0.0.11:6379> set cba 123
OK

查看键 值

20.0.0.11:6379> keys * #查看键
1) "cba"
2) "abc"
3) "lcx"
20.0.0.11:6379> get lcx #查看键的值
"123"

20.0.0.11:6379> keys * #查看所有的库
1) "myset:__rand_int__" 
2) "counter:__rand_int__"
3) "key:__rand_int__"
4) "cba" #自己创建的
5) "mylist"
6) "lcx" #自己创建的
7) "abc" #自己创建的

20.0.0.11:6379> SELECT 10 #切换到第11个库,因从0计数所以第1110
OK
20.0.0.11:6379[10]> keys *
(empty list or set) #此时为空
20.0.0.11:6379> MOVE lcx 10 #将自建的一个库转移到第11个库中
(integer) 1
20.0.0.11:6379> SELECT 10
OK
20.0.0.11:6379[10]> keys *
1) "lcx"

20.0.0.11:6379> SELECT lcx #原有的库将被移除
(error) ERR invalid DB index

20.0.0.11:6379> SELECT 10
OK
20.0.0.11:6379[10]> FLUSHDB #清空库的内容
OK
20.0.0.11:6379[10]> keys *
(empty list or set)

20.0.0.11:6379[10]> SELECT 0 #0为所有库
OK
20.0.0.11:6379> keys *
1) "myset:__rand_int__"
2) "counter:__rand_int__"
3) "key:__rand_int__"
4) "cba"
5) "mylist"
6) "abc"

redis数据类型

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

String(字符串)

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
实例:set 键  值 设置键值对     get   键   获取键的值
20.0.0.11:6379> set string 10
OK
20.0.0.11:6379> get string
"10"
20.0.0.11:6379> INCR string #加一
(integer) 11
20.0.0.11:6379> DECR string #减一
(integer) 10
20.0.0.11:6379> INCRBY string 5 #多数值增加
(integer) 15
20.0.0.11:6379> DECRBY string 5 #多数值减少
(integer) 10

Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
实例:Hset:添加hash数据 hget:获取hash数据 hmget:获取多个hash数据
20.0.0.11:6379> hset hash a a
(integer) 1
20.0.0.11:6379> hset hash b b c c
(integer) 2
20.0.0.11:6379> hget hash a
"a"
20.0.0.11:6379> hmget hash a b c
1) "a"
2) "b"
3) "c"

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
实例:lpush:从左边推入值 lpop:从左边弹出值  rpush:从右边推入值 rpop:从右边弹出值  llen:查看某个list数据类型的长度
20.0.0.11:6379> LPUSH abc 1
(integer) 1
20.0.0.11:6379> LPUSH abc 2
(integer) 2
20.0.0.11:6379> LPUSH abc 3
(integer) 3
20.0.0.11:6379> llen abc
(integer) 3
20.0.0.11:6379> RPOP abc
"1"
20.0.0.11:6379> RPOP abc
"2"
20.0.0.11:6379> RPOP abc
"3"
20.0.0.11:6379> LRANGE abc 0 2 #加范围,从第一个到第三个
1) "3"
2) "2"
3) "1"

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 set 10
(integer) 1
20.0.0.11:6379> sadd set 10
(integer) 0
20.0.0.11:6379> sadd set 11
(integer) 1
20.0.0.11:6379> scard set
(integer) 3

20.0.0.11:6379> SISMEMBER set 10
(integer) 1
20.0.0.11:6379> SISMEMBER set 11
(integer) 1
20.0.0.11:6379> SISMEMBER set 13
(integer) 0

20.0.0.11:6379> srem set 11
(integer) 1
20.0.0.11:6379> SISMEMBER set 11
(integer) 0

20.0.0.11:6379> SMEMBERS set
1) "10"

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
使用方法:zadd key score member 
zcard:查询
zrang:数据排序
实例:
20.0.0.11:6379> zadd zset 10 1
(integer) 1
20.0.0.11:6379> zadd zset 20 2
(integer) 1
20.0.0.11:6379> zadd zset 30 3
(integer) 1
20.0.0.11:6379> zcard zset 
(integer) 3

20.0.0.11:6379> ZRANGEBYSCORE zset 0 100
1) "1"
2) "2"
3) "3"

20.0.0.11:6379> ZRANGE zset 0 100 withscores
1) "1"
2) "10"
3) "2"
4) "20"
5) "3"
6) "30"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值