zoukankan      html  css  js  c++  java
  • redis 随笔

    简介

    Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。

    Redis是一个内存数据库,但在磁盘数据库上是持久的,因此它代表了一个不同的权衡,在这种情况下,在不能大于存储器(内存)的数据集的限制下实现非常高的写和读速度。

    内存数据库的另一个优点是,它与磁盘上的相同数据结构相比,复杂数据结构在内存中存储表示更容易操作,并且可在这些数据类型上定义原子操作。。 因此,Redis可以做很少的内部复杂性。

    redis 和 memcached####

    • redis 支持复杂的数据结构:redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择。
    • redis 原生支持集群模式:在 redis3.x 版本中,便能支持 cluster 模式,而 memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。
    • 性能对比:由于 redis 只使用单核,而 memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。而在 100k 以上的数据中,memcached 性能要高于 redis,虽然 redis 最近也在存储大数据的性能上进行优化,但是比起 memcached,还是稍有逊色。
    • redis是内存数据库,优点见上述

    具体操作###

    redis运行

    本地输入

    redis-server redis.windows.conf
    
    

    检测redis是否工作, 输入命令PING

    
    127.0.0.1:6379> ping
    PONG
    
    

    这表明Redis已成功在您的计算机上安装了。

    redis 配置

    在Redis中,在Redis的根目录下有一个配置文件(redis.conf)。当然可以通过Redis CONFIG命令获取和设置所有的Redis配置。

    1、(1)redis获得配置:

     127.0.0.1:6379>config get requirepass "pass" 
    

    即获取到 连接密码

    (2)设置密码:

    
    127.0.0.1:6379> config set requirepass "pass" 
    OK 
    127.0.0.1:6379> config get requirepass 
    1) "requirepass" 
    2) "pass"
    
    

    设置密码后,如果任何客户端运行命令而不进行身份验证,则会返回一个(error) NOAUTH Authentication required.的错误信息。 因此,客户端需要使用AUTH命令来验证。

    127.0.0.1:6379> AUTH pass
    OK
    
    

    2、编辑配置
    要更新配置,可以直接编辑redis.conf文件,也可以通过CONFIG set命令更新配置。

    
    redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
    

    示例

    redis 127.0.0.1:6379> CONFIG SET loglevel "notice" 
    OK 
    redis 127.0.0.1:6379> CONFIG GET loglevel  
    1) "loglevel" 
    2) "notice"
    

    3 、基础命令

    1)获得符合规则的键名列表

    KEYS PATTERN
    

    使用SET命令建立一个名为bar的键,同样keys * 可以获取结果。

    1. 判断是否存在某个键
    EXISTS key
    


    如果键存在则返回1,不存在则返回0

    3)删除键

    DEL key [key...]
    

    可以删除一个或多个键,返回值为删除的键的个数。

    4)获取键值的数据类型

    TYPE key
    

    4、redis 数据类型

    (1)字符串
    Redis中的字符串是一个字节序列。Redis中的字符串是二进制安全的,这意味着它们的长度不由任何特殊的终止字符决定。因此,可以在一个字符串中存储高达512兆字节的任何内容。

    示例:
    
    
    redis 127.0.0.1:6379> set name "hello" 
    OK 
    redis 127.0.0.1:6379> get name 
    "hello"
    

    set 与get 为redis命令,name为存储的键,hello 为存储的值。

    (2)hash/散列
    Redis散列/哈希(Hashes)是键值对的集合。Redis散列/哈希是字符串字段和字符串值之间的映射。因此,它们用于表示对象。

    
    127.0.0.1:6379> hmset key name "miao" password "wang" points 200
    
    
    127.0.0.1:6379> hgetall key
    1) "name"
    2) "miao"
    3) "password"
    4) "wang"
    5) "points"
    6) "200"
    
    

    散列/哈希数据类型用于存储包含用户的基本信息的用户对象。这里HMSET,HGETALL是Redis的命令,而key是键的名称。

    (3)列表
    Redis集合是字符串的无序集合。在Redis中,您可以添加,删除和测试成员存在的时间O(1)复杂性。

    127.0.0.1:6379> sadd fruits apple
    (integer) 0
    127.0.0.1:6379> sadd fruits pear
    (integer) 0
    127.0.0.1:6379> sadd fruits orange
    (integer) 1
    127.0.0.1:6379> sadd fruits orange
    (integer) 0
    127.0.0.1:6379> smembers fruits
    1) "apple"
    2) "orange"
    3) "pear"
    
    

    列表具有不重复性。
    一个集合中的最大成员数量为2^32 - 1(即4294967295,每个集合中元素数量可达40亿个)个。

    (4)redis集合
    Redis集合是唯一字符串的无序集合。 唯一值表示集合中不允许键中有重复的数据。

    在Redis中设置添加,删除和测试成员的存在(恒定时间O(1),而不考虑集合中包含的元素数量)。列表的最大长度为2^32 - 1个元素(即4294967295,每组集合超过40亿个元素)。

    127.0.0.1:6379> sadd myset "pencil"
    (integer) 0
    127.0.0.1:6379> sadd myset "book"
    (integer) 0
    127.0.0.1:6379> sadd myset "card"
    (integer) 1
    127.0.0.1:6379> sadd myset "card"
    (integer) 0
    127.0.0.1:6379> smembers myset
    1) "book"
    2) "card"
    3) "pencil"
    
    

    在上面的示例中,通过命令SADD将三个值插入到名称为“myset”的Redis集合中。

    redis服务器

    127.0.0.1:6379> info
    

    说明了如何获取有关服务器的所有统计信息和信息。

  • 相关阅读:
    ValueError: source code string cannot contain null bytes
    django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 11001] No address found)")
    数据库索引
    Python深拷贝与浅拷贝
    ascii、unicode、utf-8、gbk
    map、reduce、filter 的用法
    TCP / UDP的区别
    男神鹏:SyntaxError: invalid character in identifier 报错!!
    男神鹏:机器学习之混淆矩阵的理解
    男神鹏:Visual Studio Code 解决红色波浪线操作
  • 原文地址:https://www.cnblogs.com/gloria-liu/p/9717833.html
Copyright © 2011-2022 走看看