Redis命令行操作

Redis简介

Redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings),散列(hashes), 列表(lists),集合(sets),有序集合(sorted sets) 与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。 Redis 内置了复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的磁盘持久化(persistence), 并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(high availability)。
Redis命令参考文档网址:http://redisdoc.com

应用场景

1)缓存
使用Redis可以建立性能非常出色的缓存服务器,查询请求先在Redis中查找所需要的数据,如果能够查询到(命中)则直接返回,大大减轻关系型数据库的压力。
2)数据临时存储位置
使用token(令牌)作为用户登录系统时的身份标识,这个token就可以在Redis中临时存储。
3)分布式环境下解决Session不一致问题时的Session库
Spring提供了一种技术解决分布式环境下Session不一致问题,叫SpringSession。而Redis就可以为SpringSession提供一个数据存储空间。
4)流式数据去重
在Redis中有一种数据类型是Set,和Java中的Set集合很像,不允许存储重复数据。借助这个特性我们可以在Redis中使用Set类型存储流式数据达到去重的目的。

Redis安装

上传并解压

1)将redis-4.0.2.tar.gz上传至Linux并解压

[atguigu@hadoop102 software]$ tar -zxvf redis-4.0.2.tar.gz -C /opt/module/

安装C语言编译环境

[atguigu@hadoop102 software]$ sudo yum install -y gcc-c++

修改安装位置

进入Redis的解压目录

[atguigu@hadoop102 software]$ cd ../module/redis-4.0.2/
[atguigu@hadoop102 redis-4.0.2]$ vim src/Makefile

修改

PREFIX?=/opt/module/redis

编译安装

1)编译
[atguigu@hadoop102 redis-4.0.2]$ make

... ...
... ...
    LINK redis-server
    INSTALL redis-sentinel
    CC redis-cli.o
    LINK redis-cli
    CC redis-benchmark.o
    LINK redis-benchmark
    INSTALL redis-check-rdb
    INSTALL redis-check-aof

Hint: It's a good idea to run 'make test' ;)

make[1]: 离开目录“/opt/module/redis-4.0.2/src”

2)安装
[atguigu@hadoop102 redis-4.0.2]$ make install

cd src && make install
make[1]: 进入目录“/opt/module/redis-4.0.2/src”
    CC Makefile.dep
make[1]: 离开目录“/opt/module/redis-4.0.2/src”
make[1]: 进入目录“/opt/module/redis-4.0.2/src”

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: 离开目录“/opt/module/redis-4.0.2/src”

启动Redis服务器

###默认配置启动

[atguigu@hadoop102 redis-4.0.2]$ cd ../redis
[atguigu@hadoop102 redis]$ ll
总用量 4
drwxrwxr-x. 2 atguigu atguigu 4096 6月  17 14:14 bin

[atguigu@hadoop102 redis]$ bin/redis-server

定制配置启动

1)拷贝配置文件到当前目录

[atguigu@hadoop102 redis]$ cp /opt/module/redis-4.0.2/redis.conf ./

2)修改配置文件

[atguigu@hadoop102 redis]$ vim redis.conf

daemonize yes #后台启动
logfile /opt/module/redis/redis.log
dir /opt/module/redis

3)启动Redis

[atguigu@hadoop102 redis]$ bin/redis-server ./redis.conf

客户端登录

1)启动客户端

[atguigu@hadoop102 redis]$ bin/redis-cli
127.0.0.1:6379>

2)测试

127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

Redis五种常用数据结构

总体结构

Redis中的数据,总体上是键值对,不同数据类型指的是键值对中值的类型。

KEYVALUE
KEYstring
KEYlist
KEYset
KEYhash
KEYzset

String类型

Redis中最基本的类型,它是key对应的一个单一值。二进制安全,不必担心由于编码等问题导致二进制数据变化。所以redis的string可以包含任何数据,比如jpg图片或者序列化的对象。Redis中一个字符串值的最大容量是512M。

List类型

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。说明它的底层是基于链表实现的,所以它操作时头尾效率高,中间效率低。
在这里插入图片描述

Set类型

Redis的Set是String类型的无序集合。它是基于哈希表实现的。

Hash类型

本身就是一个键值对集合。可以当做Java中的Map<String,String>对待。

ZSet类型

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

Redis命令行操作

基本操作

1)切换数据库
Redis默认有16个数据库。

# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1

可以使用select进行切换,数据库索引从0开始

127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> select 0
OK
127.0.0.1:6379>

2)查看数据库长度
数据库长度指的是当前数据库里面存放了多少的Key。

127.0.0.1:6379> dbsize
(integer) 3

Key操作

1)查找符合格式的Key

EYS PATTERN

*代替多个字符,?代替一个字符

127.0.0.1:6379> KEYS *
127.0.0.1:6379> KEYS ?

2)返回KEY对应的值的类型

TYPE KEY

3)把一组键值对数据移动到另一个数据库中

MOVE KEY DB

4)根据KEY进行删除,至少要指定一个KEY

DEL KEY [KEY ...]

5)检查指定的KEY是否存在。指定一个KEY时,存在返回1,不存在返回0。可以指定多个,返回存在的KEY的数量。

EXISTS KEY

6)在现有的KEY中随机返回一个

RANDOMKEY

7)重命名一个KEY,NEWKEY不管是否是已经存在的都会执行,如果NEWKEY已经存在则会被覆盖。

RENAME KEY NEWKEY

8)只有在NEWKEY不存在时能够执行成功,否则失败

RENAMENX KEY NEWKEY

9)以秒为单位查看KEY还能存在多长时间

TTL KEY

10)给一个KEY设置在SECONDS秒后过期,过期会被Redis移除。

EXPIRE KEY SECONDS

11)移除过期时间,变成永久key

PERSIST KEY

List类型操作

1)从左边添加数据

LPUSH key value [value ...]

2)从右边添加数据

RPUSH key value [value ...]

3)根据list集合的索引打印元素数据
正着数:0,1,2,3,…
倒着数:-1,-2,-3,…

LRANGE key start stop

4)list集合的长度

LLEN key

5)从左边弹出一个元素。
弹出=返回+删除。

LPOP key

6)从右边弹出一个元素。

RPOP key

7)从source中RPOP一个元素,LPUSH到destination中

RPOPLPUSH source destination

8)根据索引从集合中取值

LINDEX key index

9)在pivot指定的值前面或后面插入value

LINSERT key BEFORE|AFTER pivot value

10)只能针对存在的list执行LPUSH

LPUSHX key value

11)根据count指定的数量从key对应的list中删除value

LREM key count value

12)把指定索引位置的元素替换为另一个值

LSET key index value

13)仅保留指定区间的数据,两边的数据被删除

LTRIM key start stop

Set类型操作

1)向set集合添加数据

SADD key member [member ...]

2)查看set集合所有数据

SMEMBERS key

3)返回集合中元素的数量

SCARD key

4)检查当前指定member是否是集合中的元素

SISMEMBER key member

5)从集合中删除元素

SREM key member [member ...]

6)将指定的集合进行“交集”操作
集合A:a,b,c
集合B:b,c,d
交集:b,c

SINTER key [key ...]

7)取交集后存入destinationsin

SINTERSTORE destination key [key ...]

8)将指定的集合执行“差集”操作
集合A:a,b,c
集合B:b,c,d
A对B执行diff:a
相当于:A-交集部分

SDIFF key [key ...]
SDIFFSTORE destination key [key ...]

9)将指定的集合执行“并集”操作
集合A:a,b,c
集合B:b,c,d
并集:a,b,c,d

SUNION key [key ...]
SUNIONSTORE destination key [key ...]

10)把member从source移动到destination

SMOVE source destination member

11)从集合中随机返回count个数量的元素,count不指定就返回1个

SRANDMEMBER key [count]

12)从集合中随机弹出count个数量的元素,count不指定就弹出1个

SPOP key [count]

Hash类型操作

1)添加数据

HSET key field value

2)查询一个key的所有数据

HGETALL key

3)查询一个key对应field的数据

HGET key field

4)查询一个key的数据个数

HLEN key

5)查询一个key的所有field

HKEYS key

6)查询一个key的所有value

HVALS key

7)判断一个key中是否存在指定的field

HEXISTS key field

8)删除一个key指定的field

HDEL key field [field ...]

9)给一个key的某个field对应的value增加increment值

HINCRBY key field increment

10)批量获取一个key的多个field

HMGET key field [field ...]

11)批量添加一个key的多个field-value

HMSET key field value [field value ...]

12)在字段不存在时添加数据

HSETNX key field value

ZSet类型操作

1)添加数据

ZADD key [NX|XX] [CH] [INCR] score member [score member ...]

2)在指定范围内返回数据

ZRANGE key start stop [WITHSCORES]

3)查询key对应的数据个数

ZCARD key

4)返回对应数据的分数

ZSCORE key member

5)给某个元素增加分数

ZINCRBY key increment member

6)在分数的指定区间内返回数据

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

7)先对分数进行升序排序,返回member的排名

ZRANK key member

8)先对分数进行降序排序,返回member的排名

ZREVRANK key member

9)删除元素

ZREM key member [member ...]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值