redis

非关系型数据库(NoSQL) - redis mongodb
更符合大数据的时代需求 - 处理速度快,性能较好 因为关系型数据库要保持一致性

文档数据库 - MongoDB(保存海量数据) / ElasticSearch

键值对数据库 - redis

列族数据库

图数据库

redis
将所有东西都放在内存

Redis - KV数据库 - 内存 - 单线程+异步I/O (多路I/O复用)

计算密集型应用 - 多进程 + 多线程

I/O密集型应用 - 单线程 + 异步I/O (协程 也叫微线程)
tornado / node.js 也是单线程 + 异步I/O

2008年 - LLOOGG - log (日志)
Mysql - Redis - Remote DIctionary Server 远程字典服务 - redis
Github / Twitter / Sina / tencent / baidu / meituan 这些网站都用了redis

冷数据(不经常使用) / 热数据(经常使用)

所以热数据适合放在redis中, 不要什么都放在redis, 不然内存爆炸

redis能做什么
1.高速缓存服务(用户经常访问的数据从数据库搬到内存)
2.实时排行榜
3.投票点赞
4.消息队列

yum install redis - 不是最近版本
源代码构建安装 make && make install

1.启动Redis服务器 - 存数据:

& - 在后台运行
--requirepass 设置的你的密码

-- 第一种启动
redis-server --port 1234 --requirepass 123456 --appendonly yes
-- 第二种 
redis-server 配置文件路径(redis-5.0.4/redis.log &)
redis-server --requirepass 123456 > redis.log &
查看redis进程
ps -ef | grep redis

不想看到redis包
ps -ef | grep redis | grep -v grep
注意: 加入你忘了你设置的密码: 你可以用shutdown 来退出redis环境, 再执行
redis-server --requirepass 123456 > redis.log &
2.启动客户端:

a.连自己的

redis-cli

b.远程连接

redis-cli -h 主机ip地址 -p 端口

进入redis之后

主机: 端口> auth 密码(你刚刚设置的密码)
主机: 端口
ping 查看服务器是否连的上

127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG

忘了命令?
不存在的 redis命令网址

哈希存储 - 性能非常好的存储方案 - set
obj --- 哈希函数---> 哈希码(散列码) ---> 对象在内存中存储的位置
性能好在 你通过算出哈希码就能知道有没有这个对象

MD5 - 是哈希函数中的算法
文件 ---> MD5 / SHA1 / SHA256 ---> 哈希码 (数字指纹/签名)

hash类型来保存对象方便

redis的命令大全

127.0.0.1:6379> hset stu1 id 1001
(integer) 1
127.0.0.1:6379> hset stu1 name wangdachui
(integer) 0
127.0.0.1:6379> hset sex male
(error) ERR wrong number of arguments for 'hset' command
127.0.0.1:6379> hset stu1 sex male
(integer) 1
127.0.0.1:6379> hset stu1 birth 1990-1-1
127.0.0.1:6379> hmset stu2 id 1002 name leixin sex girl birth 1997-10-1
OK
127.0.0.1:6379> hvals stu2
1) "1002"
2) "leixin"
3) "girl"
4) "1997-10-1"
127.0.0.1:6379> hgetall stu1
1) "name"
2) "wangdachui"
3) "id"
4) "1001"
5) "sex"
6) "male"
7) "birth"
8) "1990-1-1"
127.0.0.1:6379> type stu1
hash

=============================

验证hash密码
import hashlib


# TODO 用户密码要存入数据库的时候就要用hash码, 不能用明文的密码
# TODO 所以为什么官网那些注册密码的时候,要有数字,字母和字符,而不是纯数字,
# 就是害怕那些人通过hash反摘要来获取你的密码
# 验证hash密码
def main():
    # md5(218比特)-目前已被破(但是对于我们足够了) / sha1 / sha256
    digester = hashlib.md5()  # bit是0或1 但是是2的18次方
    with open('', 'rb') as f:  # 有hash码的文件(python官网下载包就是)
        # TODO 写两次读麻烦
        # data = f.read(1024)  # 写2的次方看是否是合格的程序员
        # while data:
        #     digester.update(data)
        #     data = f.read(1024)  # 又多一次无聊 用另外的方法

        # TODO iter - python自带的迭代器
        for data in iter(lambda: f.read(1024), b''):
            digester.update(data)
        # digest - 摘要
        print(digester.hexdigest())


if __name__ == '__main__':
    main()

=================================

读写分离

给别人当奴隶(你只能读,)
首先你先退出你的redis环境

redis-cli

auth 密码

ping

shutdown - 退出自己的环境

然后连接别人的redis环境

redis-server --slaveof  ip(他的ip) 端口(一般都为6379) --re
quirepass 他的ip >redis.log &

主人可以通过

info replication  - 查看多少人连接你

恢复你自己的主人身份

slaveof no one

ctrl + p 查看有哪些参数

ifconfig etho - 查看内网地址

终端解压压缩包

gunzip

你可能感兴趣的:(redis)