Redis 非关系型数据库基础命令

非关系性数据库产生背景

high performance -对数据库高并发读写需求
huge storage -对海量数据高效存储访问需求
high scalability && high availavility -对数据库高可扩展性与高可用性需求

Redis简介

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

安装过程
在这里插入图片描述
首先把包拖入opt下tar接下进入解压之后的包,里面没有./configure直接make编译

[root@localhost redis-5.0.7]# tar zxvf redis-5.0.7.tar.gz
[root@localhost redis-5.0.7]# cd redis-5.0.7/
make编译
然后指定安装路径,直接指定到redis里
[root@localhost redis-5.0.7]# make prefix=/usr/local/redis install
因为之前装的时候就指定了可以识别
[root@localhost redis-5.0.7]# cd /usr/local/bin/
[root@localhost bin]# ls
redis-benchmark  redis-check-rdb  redis-sentinel
redis-check-aof  redis-cli        redis-server
在安装文件里有个utlis
[root@localhost redis-5.0.7]# cd utils/
进入里面有个配置脚本install_server.sh 
启动这个配置脚本
[root@localhost utils]# ./install_server.sh 
一路回车下去就完成了
Please select the redis port for this instance: [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/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/bin/redis-server
Cli Executable : /usr/local/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!

然后查看6379端口有没有启

[root@localhost utils]#  netstat -anpt |grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      6324/redis-server 1 

测试127环回口是否能进入redis

[root@localhost utils]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> 

如果需要网段是自己的20.0.0.41就要进入配置文件添加监听端口20.0.0.41

进入主配置文件
[root@localhost utils]# vi /etc/redis/6379.conf 
  70 bind 127.0.0.1 20.0.0.41  ##70行添加20.0.0.41地址
  wq保存退出然后重启服务
  /etc/init.d/redis_6379 stop start
[root@localhost utils]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@localhost utils]# /etc/init.d/redis_6379 start
Starting Redis server...

然后 redis-cli -h 20.0.0.41 -p 6379 康康能不能进入

[root@localhost utils]# redis-cli -h 20.0.0.41 -p 6379
20.0.0.41:6379> 

数据库常用操作

在这里插入图片描述

String (字符串)

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

20.0.0.41:6379> set name zhangsan  ##创建字符串类型key是name值是zhangsan
OK
20.0.0.41:6379> get name  ##查看key的value值
"zhangsan"
20.0.0.41:6379> keys *  ##查看创建的key
1) "name"
20.0.0.41:6379> type name  ##查看name的类型
string

Hash(哈希字典)

hash 是一个键值=>value的集合
hash是一个string类型的field和value的映射表,特别适合用于存储对象。
每个has可以存储2的32次方-1键值对
作用场景:键值对集合;即编程语言中Map类型 适合存储对象,并且可以像数据库种update一个属性一样只修改某一项属性值 是面向对象的

20.0.0.41:6379> hmset xuesheng name lisi nianling 20 xingbie 男
OK
它的key下可以对应多个值进行调用
20.0.0.41:6379> hget xuesheng name
"lisi"
20.0.0.41:6379> hget xuesheng xingbie
"\xe7\x94\xb7"  ##乱码
这时进入时加入--raw解析中文字符集
[root@localhost utils]# redis-cli -h 20.0.0.41 -p 6379 --raw
20.0.0.41:6379> hget xuesheng xingbie
男

List(列表)

redis列表时简单的字符串列表,按照插入顺序排序,可以重复。可以添加一个元素到列表的头部(左边)或者尾部(右边)
列表最多可以存储2的32次方-1元素
作用场景:增删块,提供操作某一段元素API 罪行消息排行等功能, 消息队列

20.0.0.41:6379> lpush xingqu play  ##添加第一个玩。。。
1
20.0.0.41:6379> lpush xingqu du
2
20.0.0.41:6379> lpush xingqu shui
3
20.0.0.41:6379> lrange xingqu 0 10  ##查看添加的序列值
shui
du
play

Set(集合)

redis 的set时string类型无序集合,set里不能有重复的数据
集合时通过哈希表实现的所以添加,删除,查找复杂度都是0(1)
作用场景:共同好友、利用唯一性,统计访问网站所有独立ip、好友推荐时根据tag求交集,大于某个阈值可以推荐

sadd命令:添加string元素到ket对应set集合种成功1如果已经存在返回0

20.0.0.41:6379> sadd yanse lu huang hong  ##添加颜色3个
3
20.0.0.41:6379> smembers yanse  ##显示添加的值
hong
lu
huang
20.0.0.41:6379> sadd yanse hong   ##再去添加红发现显示0表示已经存在
0

zadd命令 (有序集合)

添加到元素集合,元素集合种存在则更新对应score,元素不可以重复序号可以重复

20.0.0.41:6379> zadd yan 0 hong  添加序号一样的
1
20.0.0.41:6379> zadd yan 0 lu
1
20.0.0.41:6379> zadd yan 1 huang
1
20.0.0.41:6379> zadd yan 1 lan
1
20.0.0.41:6379> zrangebyscore yan 0 10
hong
lu
huang
lan
20.0.0.41:6379> zrangebyscore yan 0 0  ##显示范围
hong
lu
20.0.0.41:6379> zrangebyscore yan 0 1
hong
lu
huang
lan
20.0.0.41:6379> zrangebyscore yan 1 1
huang
lan

多库概念

redis支持多个数据库每个数据库数据不能共享,并且基于待机才有,如果集群就没有数据库概念
redis是一个字典结构的存储数据服务器,而实际上redis实例提供多个存储数据的字典,每个数据库对外都是从0开始递增数字命名,redus默认支持16个收购雅虎邮件0-15 可以配置文件无上限,客户端建立连接自动选择0号数据库
不可以随时使用select更换数据库

切换库

20.0.0.41:6379> select 1
OK
20.0.0.41:6379[1]> select 0
OK
20.0.0.41:6379>

清空库所有数据

FLUSHALL

redis不支持自定义数据库名字每个数据库都已编号命名,必须记住数据库存储了哪些数据
不能设置不同访问密码,多个数据库并不是完全隔离的,flushall可以清空整个redis所有库的实例

key常规管理

key是否存在 exists

20.0.0.41:6379> exists name
1
没有显示0

重命名

20.0.0.41:6379> rename name names
OK
20.0.0.41:6379> get names
zhangsa

设置超时时间

20.0.0.41:6379> PEXPIRE na 60000 

查看剩余时间

20.0.0.41:6379> PTTL name
-2

取消超时时间

20.0.0.41:6379> PERSIST name 

查看类型type

20.0.0.41:6379> type names
string

随机返回key值 RANDOMKEY

20.0.0.41:6379> randomkey
names
20.0.0.41:6379> randomkey
xingqu
20.0.0.41:6379> randomkey
xingqu

查看所有key

20.0.0.41:6379> keys *
xingqu
names
xuesheng
yanse
yan

数据迁移数据库move

20.0.0.41:6379> move yan 1
1
20.0.0.41:6379> select 1
OK
20.0.0.41:6379[1]> keys *
yan
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值