• redis学习----Redis入门


    Redis

    Redis 是一种基于键值对的NoSQL 我们用它来做数据缓存,减少数据库的压力。我们可以进入一下网站对redis进行学习
    http://try.redis.io/

    Redis的数据类型

    Redis中所有的数据都是以key/value的方式存储的,我们所说的数据类型指的是value,
    在Redis中有一下集中数据类型

    • String
    • Hash
    • List
    • Set
    • ZSet

    数据操作

    由于Redis是键值存储。我们可以使用set来进行数据的存储,使用get进行数据的读取,使用 del 对数据进行删除

    set name "test"这里重复使用set可以对这条数据进行修改
    get name => "test"

    以原子的方式递增存储在给定键上的值

    由于redis可以被多个客户端连接使用,如果多个客户端同时修改一个键,如果使用关系型数据库可以进行锁表操作来避免数据的不一致。在Redis中则使用INCR 以原子的方式递增存储在给定键上的数字。

    set count 10
    incr count => 11
    incr count =>12

    Redis中控制键的存在时间

    Redis中可以控制key只存在的一段时间,在这段时间内,这个键是存在的,时间到了后,这个键会自动销毁。我们可以使用EXPIRE和TTL命令来操作这个键什么时候删除和查看什么时候删除,TTL命令的返回值是一个整数,-1则是永久存在-2则是不存在。

    SET lock "lock"
    EXPIRE lock 120 //120秒后会自动删除
    TTL lock => 113 //113秒后会自动删除
    TTL lock => (integer)-2 //lock 被销毁

    Redis中更复杂的数据结构

    Redis中还可以存一些更复杂的数据结构

    列表

    与列表交互的命令有rpush、lpush、llen、lrange、lpop和rpop
    rpush:将新值放在列表的末尾
    lpush:将新值放在列表的开头
    lrange:查询列表的子集,它有两个参数,第一个是指定开始参数起始位置(从0开始)第二个参数是指指定的结束位置(第二个参数如果是-1则表示列出到最后一个)
    llen:返回列表的当前长度
    lpop:从列表中删除第一个元素并返回它
    rpop:从列表中删除最后一个元素并返回它

    rpush friends 'alice'
    lpush friends 'alice'
    lrange friends => "alice" "alice"
    llen friends => 2
    lpop friends => "alice"
    rpop friends => nul

    集合

    集合类似于列表,但是集合里面不能存储相同的值,并且集合的存储是无序的,使用集合的命令有是sadd、srem、sismember、smembers和sunion
    sadd:将给定值添加到集合中
    srem:从集合中删除给定值
    sismember:测试给定值是否在集合中,如果在,则返回1,如果不在则返回0 *
    smemebrs:返回此集合中所有成员的列表
    sunion:两个或多个集合组合并返回所有元素的列表

    sadd super 'fly'
    srem super fly
    sismember super 'fly' => 0
    sismembers => nul
    sadd bired 'fly'
    sunion super bired => "fly"

    Sorted Sets(有序集合)

    集合本生是没有排序的,但是由于它们未排序,因此无法解决许多问题。redis 1.2 中引入了Sorted Sets(有序集合)。有序集合类似于常规集。
    zadd: 添加一个有序集合,它有两个参数,第一个是排序的优先级,第二个是值。
    zrange:查看一个有序集合某一区间内的值。它也有连个参数,第一个是查找的起始位置,第二个是结束位置,第二个如果是-1则表示查到最后

    zadd black 1101 'alice'
    zadd black 1111 'jack'
    zrange black 0 -1 => "alice" "jack"

    Hashes

    Redis 中Hashes是字符串字段与字符串值之间的映射,因此它们是表示对象的完整数据类型
    hset:redis中hashes中存储数据的命令,它支持一次存储多个hashes数据
    hgetall:获取所有保存的数据
    hget:获取一个可能存在的字段值
    hdel:删除某一个字段
    hincrby:以原子的方式递增

    hset user name 'john smith' email 'john.simith@example.com'
    hgetall user => "name" "john smith" "email" "john.simith@example.com"
    hget user name => "john smith"
    hset count visits 10
    hincrby count visits 1 => 11
    hdel count vistis

    Redis中的各类型应用场景

    类型 简介 特性 场景
    String 二进制安全 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M /---
    Hash 键值对集合,即编程语言中的Map类型 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) 存储、读取、修改用户属性
    List 链表(双向链表) 增删快,提供了操作某一段元素的API 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列
    Set 哈希表实现,元素不重复 1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐
    Sorted Set 将Set中的元素增加一个权重参数score,元素按score有序排列 数据插入集合时,已经进行天然排序 1、排行榜 2、带权重的消息队列
  • 相关阅读:
    WordPress Editorial Calendar插件权限安全绕过漏洞
    Linux kernel 本地拒绝服务漏洞
    Linux kernel ‘evm_update_evmxattr’函数拒绝服务漏洞
    VB6-ListView的排序和点滴
    VB6IDE改造
    杂记-匆匆北京行
    第60篇随笔:《道法自然》读书笔记
    VB6 AddIns 控件样式模板
    VB6-改造ComUnit(免除用例名称注册)
    VB6-设计模式点滴
  • 原文地址:https://www.cnblogs.com/bananafish/p/10675402.html
Copyright © 2020-2023  润新知