redis 查看所有value_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) 内存数据库,存储一些需要快速访问的数据,低延时高并发。缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统。

9cbc3b7298f0194fe3dddd7e11e91422.png

b3e1761ff20d942c121c3781489b481a.png

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也可以当作一个消息缓存服务器,通过订阅和发布的方式传递消息。

ce1d9a1a805e3e567960a4f56aaadd32.png

b3e1761ff20d942c121c3781489b481a.png

类型简介命令
String它是一个二进制安全的字符串,意味着它不仅能够存储字符串、还能存储图片、视频等多种类型, 最大长度支持512M。GET/MGETSET/SETEX/MSET/MSETNXINCR/DECRGETSETDEL
Hash该类型是由field和关联的value组成的map。其中,field和value都是字符串类型的。HGET/HMGET/HGETALLHSET/HMSET/HSETNXHEXISTS/HLENHKEYS/HDELHVALS
List该类型是一个插入顺序排序的字符串元素集合, 基于双链表实现。LPUSH/LPUSHX/LPOP/RPUSH/RPUSHX/RPOP/LINSERT/LSETLINDEX/LRANGELLEN/LTRIM
SetSet类型是一种无顺序集合, 它和List类型最大的区别是:集合中的元素没有顺序, 且元素是唯一的。底层是通过哈希表实现的。SADD/SPOP/SMOVE/SCARDSINTER/SDIFF/SDIFFSTORE/SUNION
Sorted setZSet是一种有序集合类型,每个元素都会关联一个double类型的分数权值,通过这个权值来为集合中的成员进行从小到大的排序。与Set类型一样,其底层也是通过哈希表实现的ZADD/ZPOP/ZMOVE/ZCARD/ZCOUNTZINTER/ZDIFF/ZDIFFSTORE/ZUNION

3 redis命令行操作

3.1 服务器操作

(1)启动redis

1sudo service redis-server start

(2)连接上redis-server

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

3.2 String字符串操作

(1)添加

123set key value 如:set username xiaotuo

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

(2)删除

123del key如:del username

(3) 设置过期时间

1expire key timeout(单位为秒)

(4)查看过期时间

123ttl key如:ttl username

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

1keys *

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的这个元素。
  • 获取列表中的元素个数
123llen key如:llen languages
  • 删除指定的元素
123lrem key count value如:lrem languages 0 php

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

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

3.4 set集合的操作

123sadd set value1 value2....如:sadd team xiaotuo datuo
  • 查看元素
123smembeers set如:smembers team
  • 移除元素
123srem set member...如:srem team xiaotuo datuo
  • 查看集合中的元素个数
123scard set如:scard team1
  • 获取多个集合的交集
123sinter set1 set2如:sinter team1 team2
  • 获取多个集合的并集
123sunion set1 set2如:sunion team1 team2
  • 获取多个集合的差集
123sdiff set1 set2如:sdiff team1 team2

3.5 hash哈希操作

  • 添加一个新值
123hset key field value如:hset website baidu http://baidu.com

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

  • 获取哈希中的field对应的值
123hget key field如:hget website baidu
  • 删除field中的某个field
123hdel key field如:hdel website baidu
  • 获取某个哈希中所有的field和value
123hgetall key如:hgetall website
  • 获取某个哈希中所有的field
123hkeys key如:hkeys website
  • 获取某个哈希中所有的值
123hvals key如:hvals website
  • 判断哈希中是否存在某个field
123hexists key field如:hexists website baidu
  • 获取哈希中总共的键值对
123hlen field如:hlen website

3.6 发布/订阅操作

  • 给某个频道发布消息
1publish channel message
  • 订阅某个频道的消息
1subscribe channel

4 redis代码实例

4.1 Python 操作 redis代码实例

  • 安装python-redis:pip install redis
  • 新建一个文件比如redis_test.py,然后初始化一个redis实例变量,并且在ubuntu虚拟机中开启redis。比如虚拟机的ip地址为192.168.174.130。示例代码如下:
1234# 从redis包中导入Redis类from redis import Redis# 初始化redis实例变量xtredis = Redis(host='192.168.174.130',port=6379)
  • 对字符串的操作:操作redis的方法名称,跟之前使用redis-cli一样,现就一些常用的来做个简单介绍,示例代码如下(承接以上的代码)
1234567891011# 添加一个值进去,并且设置过期时间为60秒,如果不设置,则永远不会过期xtredis.set('username','xiaotuo',ex=60)# 获取一个值xtredis.get('username')# 删除一个值xtredis.delete('username')# 给某个值自增1xtredis.set('read_count',1)xtredis.incr('read_count') # 这时候read_count变为2# 给某个值减少1xtredis.decr('read_count') # 这时候read_count变为1
  • 对列表的操作:同字符串操作,所有方法的名称跟使用redis-cli操作是一样的:
12345678910# 给languages这个列表往左边添加一个pythonxtredis.lpush('languages','python')# 给languages这个列表往左边添加一个phpxtredis.lpush('languages','php')# 给languages这个列表往左边添加一个javascriptxtredis.lpush('languages','javascript')# 获取languages这个列表中的所有值print xtredis.lrange('languages',0,-1)> ['javascript','php','python']
  • 对集合的操作:
12345678910# 给集合team添加一个元素xiaotuoxtredis.sadd('team','xiaotuo')# 给集合team添加一个元素datuoxtredis.sadd('team','datuo')# 给集合team添加一个元素slicextredis.sadd('team','slice')# 获取集合中的所有元素xtredis.smembers('team')> ['datuo','xiaotuo','slice'] # 无序的
  • 对哈希(hash)的操作:
12345678# 给website这个哈希中添加baiduxtredis.hset('website','baidu','baidu.com')# 给website这个哈希中添加googlextredis.hset('website','google','google.com')# 获取website这个哈希中的所有值print xtredis.hgetall('website')> {"baidu":"http://baidu.com","google":"http://google.com"}
  • 事务(管道)操作:redis支持事务操作,也即一些操作只有统一完成,才能算完成。否则都执行失败,用python操作redis也是非常简单,示例代码如下:
12345678# 定义一个管道实例pip = xtredis.pipeline()# 做第一步操作,给BankA自增长1pip.incr('BankA')# 做第二步操作,给BankB自减少1pip.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


版权声明:本文为weixin_30336701原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。