Redis入门(一)——了解Redis

在各大公司的招聘中,经常在工作职责里看到要求熟悉Redis,为了更好的发展只能催促自己趁着有空学习和记录一下了。
在这里插入图片描述

一、简介

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库,全名叫RemoteDictionaryServer,使用C语言编写,是key-value存储系统,支持丰富的数据类型。

二、应用场景

Redis交换数据快,常用来存储频繁被调用的数据,这样就节省了系统在磁盘上获取数据的IO开销,极大提升速度。

一个redis实例最多可以提供16个数据库,下标是从0到15,默认连接的是第0号数据库

三、安装Redis

下载链接:Redis-x64-5.0.10.msi(提取码:0cel
傻瓜式一键安装即可
设定目录
在这里插入图片描述
服务端口
在这里插入图片描述

四、可视化工具

虽然可以通过命令行来进行查看数据,但是不够直观,用上可视化工具可以大大提高效率。
我目前用的是redis desktop manager(提取码:4upe),也是一键式傻瓜安装
在这里插入图片描述
设置相应ip和端口即可连接
在这里插入图片描述
查看以及操作数据
在这里插入图片描述

五、数据类型

Redis有着String、Hash、List、Set、Sorted Set等五个基本数据类型。

3.1 String

String类型在redis中是最常见的类型,value存储最大数据量为512M。

下面为String的常见操作命令(键值为key)

命令描述
set key value设置key的值
get key获取key的值
getrange key start end截取子字符串(类似于java中的substring,start为起始索引,end为结束索引)
mset key1[key2]同时设置多个字符串
mget key1 [key2]同时读取多个字符串
setex key seconds value给字符串设置值,同时限定有效期seconds(单位:秒)
setnx key value当值为空时,赋值
setrange key offset value根据偏移量offset赋值value给key
strlen获取字符串长度
incr key对字符串存储的数字值+1
incrby key increment对字符串存储的数字值增加指定的值increment
incrbyfloat key increment对字符串存储的数字值增加指定的浮点值increment
decr key对字符串存储的数字值-1
decrby key increment对字符串存储的数字值减去指定的值increment
append key value拼接值
del key删除字符串

示例:

127.0.0.1:6379> set word "a1" //设置String值
OK
127.0.0.1:6379> get word //获取字符串值
"a1"

在这里插入图片描述

3.2 hash

一个String类型的field(字段)和value(值)的映射表,适合用来存放对象。

命令描述
hmset key field value[field value…]创建hash表,赋值字段和值
hmget key field [field…]获取hash表字段值
hgetall key获取hash表所有的字段和值
hkeys key获取所有字段
hlen key获取字段数量
hexists key field判断指定字段是否存在
hset key field value设置表字段值
hsetnx key field value只有字段field不存在时,设置字段的值

示例:

127.0.0.1:6379> hmset student:001 id 001 name tom age 18
OK
127.0.0.1:6379> hget student:001 name
"tom"
127.0.0.1:6379> hgetall student:001
1) "id"
2) "001"
3) "name"
4) "tom"
5) "age"
6) "18"
127.0.0.1:6379> hkeys student:001
1) "id"
2) "name"
3) "age"
127.0.0.1:6379> hlen student:001
(integer) 3
127.0.0.1:6379> hexists student:001 name
(integer) 1
127.0.0.1:6379> hexists student:001 sex
(integer) 0
127.0.0.1:6379> hset student:001 sex 1
(integer) 1
127.0.0.1:6379> hget stundet:001 sex
(nil)
127.0.0.1:6379> hget student:001 sex
"1"
127.0.0.1:6379> hsetnx student:001 sex 2
(integer) 0
127.0.0.1:6379> hget student:001 sex
"1"

3.3 list

翻译成列表,类似于LinkedList。

命令描述
lpush key value1[value2 …]将一个或多个值插入到列表头部
rpush key value1[value2 …]将一个或多个值插入到列表尾部
lindex key index通过索引获取列表中的元素
llen key获取列表长度
lpushx key value将一个值插入到已存在的列表头部
lrange key start end获取列表指定范围内的元素
lset key index value通过索引设置元素
del key删除list

示例:

127.0.0.1:6379> lpush mylist MongoDB //头部插入元素
(integer) 1
127.0.0.1:6379> lpush mylist mysql //头部插入元素
(integer) 2
127.0.0.1:6379> rpush mylist redis //尾部插入元素
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1 //展示0到尾部所有元素
1) "mysql"
2) "MongoDB"
3) "redis"
127.0.0.1:6379> lindex mylist 1 //获取指定索引元素
"MongoDB"

3.4 Set(集合)

类似于Java中的set集合,是一种无序的集合,其中的元素没有先后顺序。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

命令描述
sadd key member1 [member2…]对集合添加一个或多个成员
scard key获取集合的成员数
smembers key获取集合中的成员
sismember key member判断集合是否包含指定成员
sinter key1 [key2…]获取多个集合的交集
sdiff key1 [key2…]返回第一个集合与其他集合之间的差异
sunion key1 [key2…]获取多个集合并集

示例:

127.0.0.1:6379> sadd testSet redis
(integer) 1
127.0.0.1:6379> sadd testSet oracle
(integer) 1
127.0.0.1:6379> sadd testSet mysql
(integer) 1
127.0.0.1:6379> scard testSet
(integer) 3
127.0.0.1:6379> smembers testSet
1) "redis"
2) "mysql"
3) "oracle"
127.0.0.1:6379> sismember testSet mysql
(integer) 1
127.0.0.1:6379> sadd mytest a java oracle redis
(integer) 4
//对两个集合求交集
127.0.0.1:6379> sinter mytest testSet
1) "redis"
2) "oracle"
127.0.0.1:6379> sdiff testSet mytest
1) "mysql"
//对两个集合求并集
127.0.0.1:6379> sunion testSet mytest
1) "redis"
2) "oracle"
3) "mysql"
4) "java"
5) "a"

3.5 sorted Set(有序集合)

和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

命令描述
zadd key score1 member1 [score2 member2 …]向有序集合添加一个或多个成员,或者更新已存在成员的分数
zcard key获取有序集合的成员数
zrank key member获取元素对应的索引
zrange key start end获取有序集合指定范围的元素
zrem key member1 [member2 …]移除集合中的一个元素或多个元素

示例:

127.0.0.1:6379> zadd myset 1 sad 2 angry
(integer) 2
127.0.0.1:6379> zadd myset 2 mysql
(integer) 1
127.0.0.1:6379> zcard myset
(integer) 3
127.0.0.1:6379> zadd key 3 mysql
(integer) 1
127.0.0.1:6379> zcard myset
(integer) 3
127.0.0.1:6379> zrank myset mysql
(integer) 2
127.0.0.1:6379> zrank myset angry
(integer) 1
127.0.0.1:6379> zrank myset sad
(integer) 0
127.0.0.1:6379> zrange myset 1 -1
1) "angry"
2) "mysql"
127.0.0.1:6379> zrem myset sad
(integer) 1
127.0.0.1:6379> zrange myset 0 -1
1) "angry"
2) "mysql"
127.0.0.1:6379> zscore myset mysql
"2"
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值