Redis数据库

redis 数据库

官方网站:http://www.redis.cn/
命令参考文档:http://doc.redisfans.com/
中文文档: http://www.redis.cn/cmmands.html


  • nosql 不支持 sql 语法的操作!
  • 存储的数据结构和关系型结构不一样!
    存储的形式:key --> value
  • 每一个不同的 nosql 数据库有自己的语言和 api !

nosql 和 sql 对比

@ 使用场景不一样
@ 事务特性的支持,nosql基本不支持,关系型非常完善

1. redis简介与安装

@ 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
@ 特性:
- 内存数据库,速度快,也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
- 支持事务.
@ 优势:
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。(事务)
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
@ 应用场景
- 缓存
- 替代传统数据库 – 比如社交类应用
- session共享、购物车
- …
@ 压缩包安装目录
- 编译安装
make
make test
make install
- 安装目录
/usr/local/bin
/redis-server redis服务
/redis-cli redis命令行客户端
/redis-benchmark redis性能测试工具
/redis-check-aof AOF文件修复工具
/redis-check-rdb RDB文件检索工具
- 配置文件移动到 /etc/ 目录下
sudo cp /usr/local/redis/redis.conf /etc/redis/
```redis.conf
# 绑定的IP,default=127.0.0.1
bind IP

	# 绑定端口号 default=6379
	port

	# 是否守护进程启动 default=no
	daemonize yes

	# 数据文件
	dbfilename dump.rdb

	# 数据文件存储路径 default=./
	dir ./

	# 日志文件
	logfile

	# 数据库,default=16
	dbsize 16

	# 主从复制,类似于双机备份
	slaveof 

	注:目录没有的话县手动创建出来,否则启动redis的时候会报错误,启动不成功!!!
	```
- redis-server --help

2. redis数据类型及操作

五大类型:string、hash、list、set、zset
hash、list、set、zset 中的 value 必须是 string

  • 键命令
keys *
keys key-name
keys a*

exists key 判断键是否存在

type key-name 查看数据类型

del k1 k2 k3 ... 删除key

expire key seconds 设置键的过期时间

ttl key  查看键过期时间还有多少秒
  • string 基于二进制安全的,最多容纳 512M
# 设置单个键值对
set name value
get name

# 设置键的过期时间
setex key seconds value

# 一下设置多个键值对
mset k1 v1 k2 v2 k3 v3 ... 
mget

# 追加值
append key value
  • hash 用于存储对象
# 设置单个属性
hset key filed value
hget

# 设置多个属性值
hmset key filed1 value1 filed2 value2 ...
hmget 

# 获取所有属性值
hvals
hkeys 

# 删除
hdel key field1 filed2

  • list
# 左侧插
lpush key v1 v2 v3 ..

# 右侧插
rpush key v1 v2 v3 ..

# 中间某元素插
insert key before或after 现有元素 新元素

# 获取
lrange key start stop  start和stop是包含在内的; stop可以为负数的 

# 设置指定索引位置元素的值
lset key index value

# 从左往右移除
lrem key count value 

# 从右往左移除 用 count=负值 -

  • set
无序集合,里面每个值是string类型

# 添加
sadd key mem1 [mem2 mem3 ...]

# 获取
smembers key

# 删除
srem key mem1 [mem2 mem3 ...]
  • zset
- 有序集合,权重概念
- 元素为string类型
- 元素具有唯一性,不重复
- 每个元素都会关联一个 double 类型的 score,表示权重,通过权重将元素从小到大排序
说明:没有修改操作

# 添加
zadd key score1 mem1 [score2 mem2 score3 mem3 ...]

# 获取
zrange key 
zrangebyscore
zscore key mem

# 删除
zrem key member [member ...]

3. redis 集群

软件层面的集群、硬件层面的集群
集群:一组通过网络连接的计算机,共同对外提交服务,像一个独立的服务器,提高redis对外处理任务的能力。
redis集群实现 https://www.freesion.com/article/2933444170/在这里插入图片描述

#配置 7000.conf
port 7000
bind 127.0.0.1
daemonize yes
pidfile 7000.pid
cluster-enable yes
cluster-config-file 7000_node.conf
cluster-node-timeout 15000
appendonly yes

# 配置 7001.conf
port 7001
bind 127.0.0.1
daemonize yes
pidfile 7001.pid
cluster-enable yes
cluster-config-file 7001_node.conf
cluster-node-timeout 15000
appendonly yes

# 配置 7002.conf
port 7002
bind 127.0.0.1
daemonize yes
pidfile 7002.pid
cluster-enable yes
cluster-config-file 7002_node.conf
cluster-node-timeout 15000
appendonly yes

sudo reids-server ./7000.conf
sudo reids-server ./7001.conf
sudo reids-server ./7002.conf

sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin
会出错因为是Ruby语言;记得安装Ruby

redis-trib.rb create --replicas 1 IP1:port1 IP1:port2 IP1:port3 IP2:port1 IP2:port2 IP2:port3

–replicas 集群中节点创建

槽slot CRC16(key)/16864 取余数
set age=11

4. redis 与 python 交互

pip install redis
StrictRedis对象

from redis import StrictRedis

if __name__ == '__main__':
	try:
		sr = StrictRedis(host='',port=6379,db=0)
		res = sr.set('name','test') #添加
		res = sr.get('name') #获取;如果取不到值的话显示null
		res = sr.set('name','ttt') #修改
    	res = sr.delete('name'[,'name3','name2']) #删除;也可删除多个key;返回删除成功的个数
    	res = sr.keys()

		print(res) 
	except Exception as e:
		print(e)
  • redis存储session
pip installdjango-redis-sessions==0.5.6
默认存储在 django_session数据表中

设置redis存储redis的配置
SESSION_ENGINE='redis_session.session'
SESSION_REDIS_HOST='localhost'
SESSION_RESDIS_PORT=6379
SESSION_REDIS_DB=0
SESSION_REDIS_PASSWOED=''
SESSION_REDIS_PREFIX='session'

常用命令

/etc/init.d/redis-server stop
/etc/init.d/redis-server start
/etc/init.d/redis-server restart

redis-cli -h <hostname> -p <port>

// redis中:
select 1 # 切换到db1,默认在db0
keys * # 查看所有键
type “键”. # 查看键的数据类型
flushdb. # 清空当前的db
flushall # 清空所有db

// 开启同步
redis-cli SLAVEOF xxx 6379

// 关闭同步
redis-cli SLAVEOF NO ONE

// 查看复制状态
redis-cli info Replication

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值