【nosql-redis】1 安装和基础操作

介绍

定义

  • redis是一个key-value存储系统。和Memcached类似
  • 数据结构: redis提供五种数据类型:string,hash,list,set及zset(sorted set)。
  • 在实际项目中的使用,插入数据或查询数据缓存起来,并且设置过期时间;也可以以文本的形式持久化到磁盘,或保存到数据库

Redis特点

redis 与其他 key - value 缓存产品有以下三个特点:

  • redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  • redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • redis支持数据的备份,即master-slave模式的数据备份。

Redis优点

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。
同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。
这样处理,主要是实时读写redis,而mysql数据则通过队列异步处理,缓解mysql压力,不过这种方法应用场景主要基于高并发,而且redis的高可用集群架构相对更复杂,一般不是很推荐。

Redis windows 版本操作

  • 下载地址:
    https://www.baidu.com/link?url=SkE5LsvHwYwH7ygjTKMOtR_YzE_A_0Lc9tmhv23I4Ek6_P5oOiyuTVWy_pp68b_VgwefASFbIWR6fPRsy-9CPi0MHHGEOLlwttu1P25Xdce&wd=&eqid=efb3b3c40003070a00000006589c365c

  • Windows 64位下安装Redis详细教程–>
    http://jingyan.baidu.com/article/f25ef2546119fd482c1b8214.html

  • 操作步骤:
    1、在D盘新建文件夹【redis】,右键解压Redis ZIP包,把所有文件解压到redis文件夹中。(其他盘符也可以)
    文件介绍:
    redis-benchmark.exe #基准测试
    redis-check-aof.exe # aof
    redischeck-dump.exe # dump
    redis-cli.exe # 客户端
    redis-server.exe # 服务器
    redis.windows.conf # 配置文件
    在这里插入图片描述

2、windows 运行,进入DOC操作系统窗口。
使用命令【redis-server.exe redis.windows.conf】启动redis 服务
3、服务启动成功状态
在这里插入图片描述

4、服务器不用关闭,另外从新启动一个dos窗口,进入redis目录
使用命令【redis-cli.exe】,就可以set或者get对应的key/value了
在这里插入图片描述

Redis linux操作

下载地址: http://download.redis.io/redis-stable.tar.gz
redis入门——redis安装:http://blog.csdn.net/ludonqin/article/details/47211109

https://my.oschina.net/u/2302550/blog/678363

注意:在安装过程当中,可能你的linux系统没有安装gcc,需要自己安装gcc

打开redis客户端: redis-cli

服务器相关命令

  ping PONG返回响应是否连接成功
  echo 在命令行打印一些内容
  select 0~15 编号的数据库
  quit  /exit 退出客户端
  dbsize 返回当前数据库中所有key的数量
  info 返回redis的相关信息
  config get dir/* 实时传储收到的请求
  flushdb 删除当前选择数据库中的所有key
  flushall 删除所有数据库中的数据库

切换数据库>:Select 1 [切换到1数据库(字典),默认16个数据库]

多行字符串回复>: Keys * //就是返回所有的key

获取符合规则的键名列表>: keys pattern //pattern有如下取值

符号含义
?匹配一个字符
*匹配任意个字符
[ ]匹配括号间的任意字符,可以使用“-”符号表示一个范围,如a[b-d]可以匹配“ab”,”ac”和ad
?匹配字符x,用于转义符号。如要匹配“?”就需要使用?

其他命令行

命令语法例子说明
existsExists keyExists name判断name键是否存在,存在返回1,反之0
delDel keyDel name删除key为name的键
typetype keytype name返回结果为string,表示name的值为string类型
pingpingping测试客户端与redis的连接是否正常,正常返回PONG

类型对应的命令行

1、字符串类型(string)

1.1 set、get、mset、mget

设置值语法>: set key value   
         		例: set name liping  
获取值语法>: get key    
         例: get name          返回结果:liping
同时获取/设置多个键值 
Mget key key   同时获取多个键值
Mset key value key value 同时设置多个键值

1.2 incr、incrby、decr、decrby、incrbyFloat、append、strlen

 incr 命令 (递增)
   说明>: 每次递增1,可以用来生成自增ID
   例子>: incr num  返回结果为1
   
incrby 命令  
   说明>: 增加指定的数值
   例子>: incrby num 3    (原来num=1,现在num=4了)  
   
Decr 命令  【递减】
   例子>: decr num 
   
Decrby 命令 【删除指定的数值】
   例子>: decrby num 3 【num-3】
   
incrbyFloat 命令 【跟incrby类似,递增一个双精度浮点数】
   例子>: incrbyfloat num 2.6 【num原来=1,现在为3.6】

向尾部追加值: append
   例子>: append name “ nihao” 【原name=liping,结果为 liping nihao】
   
获取字符串长度: strlen
   例子>:  strlen name  【那么=liping,那么结果返结果为6,汉字占两个字节】

2、散列类型(hash)

  • 介绍:散列类型即hash类型
    如下图:car:1 为键,键下面的字段对应值
    在这里插入图片描述
  • 作用:可解决关系数据库中字段冗余的问题
命令语法例子说明
hsethset key field valueHset car:1 color red设置 car:1对象color字段的值为red
hgethget key fieldHget car:1 color获取car:1对象color字段对应的值
hmsethmset key field value [field value]hmset car:1 color red name 奥迪设置car:1对象color=red,name=奥迪
hmgethmget key field[field]Hmget car:1 color name获取car:1对象的color和name字段对应的值
HGETALLhgetall keyHgetall car:1获取car:1对象所有的字段和值
HexistsHexists key fieldHexists car:1 name判断对象字段是否存在
HsetnxHsetnx key field valueHsetnx car:1 name 宝马当字段不存在赋值,如果字段已存在不进行任何操作
HincrbyHincrby key filed incrementHincrby car:1 price 50和字符串类型incrby类似。将car:1对象的价格新增50,如果不存在则新增对象
HdelHdel key field [field]Hdel car:1 name color删除car:1对象的name和color字段
HkeysHkeys keyHkeys car:1获取car:1对象所有的字段
HvalsHvals keyHvals car:1获取car:1对象所有的值
HlenHlen keyHlen car:1获取字段的数量

3、列表类型(list)

  • 介绍:
    列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获取的列表的摸一个片段。
    列表类型内部是使用双向链表(double linked list)实现的
命令语法例子说明
LPUSHLpush key value [value]Lpush arr aa bb向列表左边添加元素
RPUSHrpush key value [value]rpush arr cc dd向列表右边添加元素
LPOPLPOP keyLPOP arr从列表左边移除第一个元素,返回结果为移除的元素
RPOPRPOP keyRPOP arr从列表右边移除第一个元素,返回结果为移除的元素
LLENLLEN keyLEN arr获取列表中元素的个数
LRANGELRANGE key start stopLRANGE arr 0 2从左边开始获取列表1-3两个元素,下标从0开始
LRANGELRANGE key start stopLRANGE arr -2 -1从右边开始获取列表1-2两个,为负数从-1开始
LRANGELRANGE key start stopLRANGE arr 0 2获取arr列表中所有的元素
LREMLREM key count valuelrem arr 2 aa当count>0时,从左边开始删除前count个值为value的元素
LREMLREM key count valuelrem arr -1 aa当count<0时,从右边开始删除前count个值为value的元素
LREMLREM key count valuelrem arr 0 aa当count=0时,删除列表所有值为value的元素
LINDEXLINDEX key indexLindex arr 2获取arr列表中下标为2的元素【index可为负数】
LSETLSET key index valuelset arr 2 aa将下标为2的元素替换成aa 【index可为负数】
LTRIMLTRIM key start stopltrim arr 1 2只保留列表指定下标范围,其他的删除
LINSERTLINSERT key BEFORE 或AFTER pivot valueLINSERT arr BEFORE b a在arr列表中的b元素之前插入a元素
RpoplpushRPOPLPUSH source destination如下图,从arr列表中移除最右边元素,添加到arr1左边

在这里插入图片描述

4、集合类型(set)

  • 介绍:集合类型是无序的,切不包含重复数据
  • 和列表类型进行对比如下图:
    在这里插入图片描述

解析:member【成员的意思、多个】

命令/语法例子说明
SADD key member [member]sadd sets a b c向集合sets添加a b c三个元素(如果在添加一个c,sets也是a b c三个元素)
SREM key member [member]srem set b c移除sets集合中b c两个元素
SMEMBERS keysmember sets获取sets集合中所有的元素
SISMEMBER key membersismember sets a判断a元素是否存在sets集合中
SDIFF key [key…]sdiff sets set1取差集,取sets[abc]和sets1[bce]的差集为a
SINTER key [key…]Sinter sets set1取交集,sets[abc]和sets1[bcd]的交集为b c
SUNION key [key…]Sunion sets set1取并集,sets[abc]和sets1[bcd]的交集为a b c d
SCARD keyScard sets获取集合中元素的个数
SRANDMEMBER [count]Srandmember sets随机获取sets集合中一个元素,【count表示随机获取count个,count>0,值不重复,count>集合长度,获取全部,count<0,可重复】
SPOP keyspop sets从集合中随机弹出一个元素

5、有序集合类型(ZSET)

命令/语法例子说明
SADD key member [member]sadd sets a b c向集合sets添加a b c三个元素(如果在添加一个c,sets也是a b c三个元素)
ZADD key score member [score member…]zadd yuwen 12 a 13 b语文 a的12,b为13分,如果发现a的分数不对,还可修改:ZADD yuwen 60 a [可为浮点型]
ZADD yuwen +inf c -inf d支持正无穷,负无穷
ZSCORE key memberZSCORE yuwen a获取元素的分数
ZRANGE key start stop [withscores]Zrange yuwen 0 -1获取yuwen对象所有的元素key 排名,0到-1是所有,0到2前三个[分数从小到大排名]
ZREVSCORE key member Start stop [withscores]Zrevrange yuwen 0 -1获取yuwen对象所有的元素key 排名,0到-1是所有,0到2前三个[分数从大到小排名]
Zrange yuwen 0 -1 withscores获取yuwen对象所有的元素key和value 排名
ZRANGEBYSCORE key min max [withscores] limit offset countZrangebyscore yuwen 10 50获取指定分数的范围,获取yuwen 10到50的元素
Zrangebyscore yuwen 10 50 withscores获取yuwen 10到50的元素以及分数
Zrangebyscore yuwen 10 50 withscores limit 0 10获取yuwen 10到50的元素以及分数,从低一个开始取10个
Zrangebyscore yuwen 10 (50获取yuwen 10到50的元素,不包含50分
Zrangebyscore yuwen (50 +inf获取yuwen 50到正无穷的元素,不包含50分
ZINCRBY key increment memberZINCRBY yuwen 40 b将某个元素增加指定的分数,分数可以为负数(为减分)
ZCARD keyZCARD yuwen获取集合中元素的数量
ZCOUNT key min maxZCOUNT yuwen 10 50获取集合中指定分数范围内元素的个数
ZREM key member[member]ZREM yuwen d删除集合中的某个元素
ZREMBYRANK key start stopZREMBYRANK yuwen 0 1按照排名范围删除元素[从小到大删除]
ZREMRANGEBYSCORE by key min maxZREMRANGEBYSCORE yuwen 40 50按照分数范围删除元素

计算有序集合的交集【ZINTERSTORE】
ZINTERSTORE destination numkeys key [keys …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

常见问题:

1、错误>: (error) NOAUTH Authentication required.
解决办法:输入redis设置过的密码 auth password

java对redis的基本操作

https://blog.csdn.net/qiaziliping/article/details/80990174

https://blog.csdn.net/qiaziliping/article/details/80989853

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值