zoukankan      html  css  js  c++  java
  • redis详细介绍附实例代码--看一篇就够了

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

    https://www.cnblogs.com/bclshuai/p/11380657.html

    redis介绍详解附实例代码--看一篇就够了

     

    目录

    1      简介... 1

    1.1     概述... 1

    1.2     特点... 1

    1.3     应用场景... 2

    2      Redis的数据类型及主要特性... 2

    3      redis命令行操作... 3

    3.1     服务器操作... 3

    3.2     String字符串操作... 4

    3.3     列表操作... 4

    3.4     set集合的操作... 6

    3.5     hash哈希操作... 7

    3.6     发布/订阅操作... 8

    4      redis代码实例... 9

    4.1     Python 操作 redis代码实例... 9

    4.2     java代码实例... 11

    1       简介

    1.1  概述

    redis是基于内存的数据库,redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。用于高并发、快速访问的应用场景。因为关系型数据的瓶颈一般是在磁盘的I/O上。

    1.2  特点

    • 高并发:基于内存运行,性能高效,支持高并发。
    • 分布式:支持分布式,理论上可以无限扩展
    • 类型丰富:key-value存储系统,支持多种数据类型
    • 通用化:开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
    • 可持久化,可以将内存中的数据定时同步到磁盘中。

    1.3  应用场景

    (1)    消息缓存服务器,通过订阅和发布的方式传递消息。

    (2)    内存数据库,存储一些需要快速访问的数据,低延时高并发。缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统。

     

    2       Redis的数据类型及主要特性

    Redis提供的数据类型主要分为5种自有类型和一种自定义类型,这5种自有类型包括:String类型、哈希map类型、list列表类型、set集合类型和zset顺序集合类型。redis是一个服务,打开cmd,通过redis-cli.exe -h 127.0.0.1 -p 6379命令连接服务器,然后通过命令行命令往redis内写数据和读数据。

    redis可以作为一个内存数据库。redis也可以当作一个消息缓存服务器,通过订阅和发布的方式传递消息。

    类型

    简介

    命令

    String

    它是一个二进制安全的字符串,意味着它不仅能够存储字符串、还能存储图片、视频等多种类型, 最大长度支持512M。

    • GET/MGET
    • SET/SETEX/MSET/MSETNX
    • INCR/DECR
    • GETSET
    • DEL

    Hash

    该类型是由field和关联的value组成的map。其中,field和value都是字符串类型的。

    • HGET/HMGET/HGETALL
    • HSET/HMSET/HSETNX
    • HEXISTS/HLEN
    • HKEYS/HDEL
    • HVALS

    List

    该类型是一个插入顺序排序的字符串元素集合, 基于双链表实现。

    • LPUSH/LPUSHX/LPOP/RPUSH
    • /RPUSHX/RPOP/LINSERT/LSET
    • LINDEX/LRANGE
    • LLEN/LTRIM

    Set

    Set类型是一种无顺序集合, 它和List类型最大的区别是:集合中的元素没有顺序, 且元素是唯一的。底层是通过哈希表实现的。

    • SADD/SPOP/SMOVE/SCARD
    • SINTER/SDIFF
    • /SDIFFSTORE/SUNION

    Sorted set

    ZSet是一种有序集合类型,每个元素都会关联一个double类型的分数权值,通过这个权值来为集合中的成员进行从小到大的排序。与Set类型一样,其底层也是通过哈希表实现的

    • ZADD/ZPOP/ZMOVE/
    • ZCARD/ZCOUNT
    • ZINTER/ZDIFF/
    • ZDIFFSTORE/ZUNION

    3       redis命令行操作

    3.1  服务器操作

    (1)启动redis

    1

    sudo service redis-server start

    (2)连接上redis-server

    1

    redis-cli -h [ip] -p [端口]

     

    3.2  String字符串操作

    (1)添加

    1

    2

    3

    set key value

      如:

    set username xiaotuo

      将字符串值value关联到key。如果key已经持有其他值,set命令就覆写旧值,无视其类型。并且默认的过期时间是永久,即永远不会过期。

    (2)删除

    1

    2

    3

    del key

    如:

    del username

    (3) 设置过期时间

    1

    expire key timeout(单位为秒)

    (4)查看过期时间

    1

    2

    3

    ttl key

    如:

    ttl username

    (5)查看当前redis中的所有key

    1

    keys *

    3.3  列表操作

    (1)在列表左边添加元素:lpush key value

    • 将值value插入到列表key的表头。如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时,将返回一个错误。

    (2)在列表右边添加元素:rpush key value

    • 将值value插入到列表key的表尾。如果key不存在,一个空列表会被创建并执行RPUSH操作。当key存在但不是列表类型时,返回一个错误。

    (3)查看列表中的元素:lrange key start stop

    • 返回列表key中指定区间内的元素,区间以偏移量start和stop指定,如果要左边的第一个到最后的一个lrange key 0 -1。

    (4)移除列表中的元素

    • 移除并返回列表key的头元素:lpop key
    • 移除并返回列表的尾元素:rpop key
    • 移除并返回列表key的中间元素:lrem key count value
      • 将删除key这个列表中,count个值为value的元素

    (5)指定返回第几个元素:lindex key index

    • 将返回key这个列表中,索引为index的这个元素。
    • 获取列表中的元素个数

    1

    2

    3

    llen key

    如:

    llen languages

    • 删除指定的元素

    1

    2

    3

    lrem key count value

    如:

    lrem languages 0 php

      根据参数 count 的值,移除列表中与参数 value 相等的元素。count的值可以是以下几种

    •  
    • count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count
    • count < 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值
    • count = 0:移除表中所有与value 相等的值
    • 添加元素

    3.4  set集合的操作 

    1

    2

    3

    sadd set value1 value2....

    如:

    sadd team xiaotuo datuo

    • 查看元素

    1

    2

    3

    smembeers set

    如:

    smembers team

    • 移除元素

    1

    2

    3

    srem set member...

    如:

    srem team xiaotuo datuo

    • 查看集合中的元素个数

    1

    2

    3

    scard set

    如:

    scard team1

    • 获取多个集合的交集

    1

    2

    3

    sinter set1 set2

    如:

    sinter team1 team2

    • 获取多个集合的并集

    1

    2

    3

    sunion set1 set2

    如:

    sunion team1 team2

    • 获取多个集合的差集

    1

    2

    3

    sdiff set1 set2

    如:

    sdiff team1 team2

    3.5  hash哈希操作 

    • 添加一个新值

    1

    2

    3

    hset key field value

    如:

    hset website baidu baidu.com

      将哈希表key中的域field的值设为value。
    如果key不存在,一个新的哈希表被创建并进行 HSET操作。如果域 field已经存在于哈希表中,旧值将被覆盖。

    • 获取哈希中的field对应的值

    1

    2

    3

    hget key field

    如:

    hget website baidu

    • 删除field中的某个field

    1

    2

    3

    hdel key field

    如:

    hdel website baidu

    • 获取某个哈希中所有的field和value

    1

    2

    3

    hgetall key

    如:

    hgetall website

    • 获取某个哈希中所有的field

    1

    2

    3

    hkeys key

    如:

    hkeys website

    • 获取某个哈希中所有的值

    1

    2

    3

    hvals key

    如:

    hvals website

    • 判断哈希中是否存在某个field

    1

    2

    3

    hexists key field

    如:

    hexists website baidu

    • 获取哈希中总共的键值对

    1

    2

    3

    hlen field

    如:

    hlen website

    3.6   发布/订阅操作

    • 给某个频道发布消息

    1

    publish channel message

    • 订阅某个频道的消息

    1

    subscribe channel

    4       redis代码实例

    4.1  Python 操作 redis代码实例

    • 安装python-redis:pip install redis
    • 新建一个文件比如redis_test.py,然后初始化一个redis实例变量,并且在ubuntu虚拟机中开启redis。比如虚拟机的ip地址为192.168.174.130。示例代码如下:

    1

    2

    3

    4

    # 从redis包中导入Redis类

    from redis import Redis

    # 初始化redis实例变量

    xtredis = Redis(host='192.168.174.130',port=6379)

    • 对字符串的操作:操作redis的方法名称,跟之前使用redis-cli一样,现就一些常用的来做个简单介绍,示例代码如下(承接以上的代码)

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    # 添加一个值进去,并且设置过期时间为60秒,如果不设置,则永远不会过期

    xtredis.set('username','xiaotuo',ex=60)

    # 获取一个值

    xtredis.get('username')

    # 删除一个值

    xtredis.delete('username')

    # 给某个值自增1

    xtredis.set('read_count',1)

    xtredis.incr('read_count')  # 这时候read_count变为2

    # 给某个值减少1

    xtredis.decr('read_count') # 这时候read_count变为1

    • 对列表的操作:同字符串操作,所有方法的名称跟使用redis-cli操作是一样的:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    # 给languages这个列表往左边添加一个python

    xtredis.lpush('languages','python')

    # 给languages这个列表往左边添加一个php

    xtredis.lpush('languages','php')

    # 给languages这个列表往左边添加一个javascript

    xtredis.lpush('languages','javascript')

    # 获取languages这个列表中的所有值

    print xtredis.lrange('languages',0,-1)

    > ['javascript','php','python']

    • 对集合的操作:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    # 给集合team添加一个元素xiaotuo

    xtredis.sadd('team','xiaotuo')

    # 给集合team添加一个元素datuo

    xtredis.sadd('team','datuo')

    # 给集合team添加一个元素slice

    xtredis.sadd('team','slice')

    # 获取集合中的所有元素

    xtredis.smembers('team')

    > ['datuo','xiaotuo','slice'] # 无序的

    • 对哈希(hash)的操作:

    1

    2

    3

    4

    5

    6

    7

    8

    # 给website这个哈希中添加baidu

    xtredis.hset('website','baidu','baidu.com')

    # 给website这个哈希中添加google

    xtredis.hset('website','google','google.com')

    # 获取website这个哈希中的所有值

    print xtredis.hgetall('website')

    > {"baidu":"baidu.com","google":"google.com"}

    • 事务(管道)操作:redis支持事务操作,也即一些操作只有统一完成,才能算完成。否则都执行失败,用python操作redis也是非常简单,示例代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    # 定义一个管道实例

    pip = xtredis.pipeline()

    # 做第一步操作,给BankA自增长1

    pip.incr('BankA')

    # 做第二步操作,给BankB自减少1

    pip.desc('BankB')

    # 执行事务

    pip.execute()

    4.2  java代码实例

    https://www.jianshu.com/p/5596c3a4978d

    参考文献

    https://www.cnblogs.com/renshaoqi/p/10617238.html

    https://www.cnblogs.com/powertoolsteam/p/redis.html

    https://www.jianshu.com/p/5596c3a4978d

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html
  • 相关阅读:
    day06
    样式表
    框架&样式表
    表单
    用表格制作百度首页
    汉企教育实训第第二天
    汉企教育实训第一天感想
    BootStrap前端框架
    MySQL存储过程、存储函数介绍
    日常记录
  • 原文地址:https://www.cnblogs.com/bclshuai/p/14340499.html
Copyright © 2011-2022 走看看