文章目录

  • 介绍
  • 定义
  • Redis特点
  • Redis优点
  • Redis windows 版本操作
  • Redis linux操作
  • 服务器相关命令
  • 类型对应的命令行
  • 1、字符串类型(string)
  • 1.1 set、get、mset、mget
  • 1.2 incr、incrby、decr、decrby、incrbyFloat、append、strlen
  • 2、散列类型(hash)
  • 3、列表类型(list)
  • 4、集合类型(set)
  • 5、有序集合类型(ZSET)
  • 常见问题:
  • java对redis的基本操作


介绍

定义

  • 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 # 配置文件
  • redis addGeo 最后的值变了_redis addGeo 最后的值变了

2、windows 运行,进入DOC操作系统窗口。

使用命令【redis-server.exe redis.windows.conf】启动redis 服务

3、服务启动成功状态

redis addGeo 最后的值变了_redis addGeo 最后的值变了_02

4、服务器不用关闭,另外从新启动一个dos窗口,进入redis目录

使用命令【redis-cli.exe】,就可以set或者get对应的key/value了

redis addGeo 最后的值变了_redis_03

Redis linux操作

下载地址: http://download.redis.io/redis-stable.tar.gz

注意:在安装过程当中,可能你的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,用于转义符号。如要匹配“?”就需要使用?

其他命令行

命令

语法

例子

说明

exists

Exists key

Exists name

判断name键是否存在,存在返回1,反之0

del

Del key

Del name

删除key为name的键

type

type key

type name

返回结果为string,表示name的值为string类型

ping

ping

ping

测试客户端与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 为键,键下面的字段对应值
  • 作用:可解决关系数据库中字段冗余的问题

命令

语法

例子

说明

hset

hset key field value

Hset car:1 color red

设置 car:1对象color字段的值为red

hget

hget key field

Hget car:1 color

获取car:1对象color字段对应的值

hmset

hmset key field value [field value]

hmset car:1 color red name 奥迪

设置car:1对象color=red,name=奥迪

hmget

hmget key field[field]

Hmget car:1 color name

获取car:1对象的color和name字段对应的值

HGETALL

hgetall key

Hgetall car:1

获取car:1对象所有的字段和值

Hexists

Hexists key field

Hexists car:1 name

判断对象字段是否存在

Hsetnx

Hsetnx key field value

Hsetnx car:1 name 宝马

当字段不存在赋值,如果字段已存在不进行任何操作

Hincrby

Hincrby key filed increment

Hincrby car:1 price 50

和字符串类型incrby类似。将car:1对象的价格新增50,如果不存在则新增对象

Hdel

Hdel key field [field]

Hdel car:1 name color

删除car:1对象的name和color字段

Hkeys

Hkeys key

Hkeys car:1

获取car:1对象所有的字段

Hvals

Hvals key

Hvals car:1

获取car:1对象所有的值

Hlen

Hlen key

Hlen car:1

获取字段的数量

3、列表类型(list)

  • 介绍:
    列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获取的列表的摸一个片段。
    列表类型内部是使用双向链表(double linked list)实现的

命令

语法

例子

说明

LPUSH

Lpush key value [value]

Lpush arr aa bb

向列表左边添加元素

RPUSH

rpush key value [value]

rpush arr cc dd

向列表右边添加元素

LPOP

LPOP key

LPOP arr

从列表左边移除第一个元素,返回结果为移除的元素

RPOP

RPOP key

RPOP arr

从列表右边移除第一个元素,返回结果为移除的元素

LLEN

LLEN key

LEN arr

获取列表中元素的个数

LRANGE

LRANGE key start stop

LRANGE arr 0 2

从左边开始获取列表1-3两个元素,下标从0开始

LRANGE

LRANGE key start stop

LRANGE arr -2 -1

从右边开始获取列表1-2两个,为负数从-1开始

LRANGE

LRANGE key start stop

LRANGE arr 0 2

获取arr列表中所有的元素

LREM

LREM key count value

lrem arr 2 aa

当count>0时,从左边开始删除前count个值为value的元素

LREM

LREM key count value

lrem arr -1 aa

当count<0时,从右边开始删除前count个值为value的元素

LREM

LREM key count value

lrem arr 0 aa

当count=0时,删除列表所有值为value的元素

LINDEX

LINDEX key index

Lindex arr 2

获取arr列表中下标为2的元素【index可为负数】

LSET

LSET key index value

lset arr 2 aa

将下标为2的元素替换成aa 【index可为负数】

LTRIM

LTRIM key start stop

ltrim arr 1 2

只保留列表指定下标范围,其他的删除

LINSERT

LINSERT key BEFORE 或AFTER pivot value

LINSERT arr BEFORE b a

在arr列表中的b元素之前插入a元素

Rpoplpush

RPOPLPUSH source destination

如下图,从arr列表中移除最右边元素,添加到arr1左边

redis addGeo 最后的值变了_redis_04

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 key

smember sets

获取sets集合中所有的元素

SISMEMBER key member

sismember 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 key

Scard sets

获取集合中元素的个数

SRANDMEMBER [count]

Srandmember sets

随机获取sets集合中一个元素,【count表示随机获取count个,count>0,值不重复,count>集合长度,获取全部,count<0,可重复】

SPOP key

spop 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 member

ZSCORE 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 count

Zrangebyscore 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 member

ZINCRBY yuwen 40 b

将某个元素增加指定的分数,分数可以为负数(为减分)

ZCARD key

ZCARD yuwen

获取集合中元素的数量

ZCOUNT key min max

ZCOUNT yuwen 10 50

获取集合中指定分数范围内元素的个数

ZREM key member[member]

ZREM yuwen d

删除集合中的某个元素

ZREMBYRANK key start stop

ZREMBYRANK yuwen 0 1

按照排名范围删除元素[从小到大删除]

ZREMRANGEBYSCORE by key min max

ZREMRANGEBYSCORE yuwen 40 50

按照分数范围删除元素

计算有序集合的交集【ZINTERSTORE】

ZINTERSTORE destination numkeys key [keys …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

redis addGeo 最后的值变了_Redis_05

redis addGeo 最后的值变了_redis addGeo 最后的值变了_06


redis addGeo 最后的值变了_redis addGeo 最后的值变了_07

常见问题:

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

java对redis的基本操作