Redis学习-介绍(一)

- 什么是Redis

   Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,它支持存储的value类型主要有:string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。并提供多种语言的API,如:Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等。

- Redis的优势

性能 —— Redis能读的速度是110000次/s,写的速度是81000次/s
数据类型 —— Redis支持多种数据类型,string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)
原子性 —— Redis的所有操作都是原子性的

- Redis的安装

安装请参考Redis的官网:https://redis.io/
https://redis.io/download 提供Redis的下载及安装方法,本文不再做赘述

-Redis的命令

安装完成后,我们可以通过控制台命令进入Redis客户端管理:redis-cli

[root@bogon ~]# redis-cli
127.0.0.1:6379>

当看到这个界面的时候表示我们已经进入了Redis客户端管理了
上边讲过Redis支持string,list,set,zset,hash等几种数据结构,现在分别来看看这几种数据结构的用法

1. string
   string是Redis的最基本的数据类型,同其他大多数KV数据库,一个key最大能存储512M的数据。string是二进制安全的,可以存储任何数据。
   string的操作如下:

127.0.0.1:6379> set memory hello_world
OK

set表示添加操作,其中memroy是key,hellow_world是值,执行操作后打印OK表示添加成功。那如何获取添加的数据呢,答案是用get命令。

127.0.0.1:6379> get memory
"hello_world"

当我们执行get,后边跟随要查询的key,就能获取其中的值,上边代码我们已经获取到了之前用set方法添加的值。

2. list
   list就是一个简单列表,数据的顺序是按照添加的顺序来排序的。数据可以添加到list的头部(left)或者尾部(right)
   list的操作如下:

127.0.0.1:6379> lpush memory_list item1
(integer) 1
127.0.0.1:6379> lpush memory_list item2
(integer) 2
127.0.0.1:6379> lpush memory_list item3
(integer) 3

   lpush表示向list的左边添加,memory_list为key,item1为value,(integer)1表示添加成功。我们向memory_list添加了三个数据,分别为:item1,item2,item3,现在来看看如何通过遍历来获取这些数据。使用lrange命令:

lrange memory_list 0 10
1) "item3"
2) "item2"
3) "item1"

   lrange表示遍历list,注意这里跟平时用的for循环一样,需要提供开始和结束条件:0表示开始,10表示结束条件。这里要注意一下打印的顺序,我们使用的是lpush,这表示我们每次是向list的左边添加数据,所以打印的时候,不是按照我们添加的顺序打印的,这里要特别注意一下。

以下是几个常用的list操作

llen:获取列表长度

127.0.0.1:6379> llen memory_list
(integer) 3

lpop:移出并获取列表的第一个元素

127.0.0.1:6379> lpop memory_list
"item2"

3. set
   set是无序集合,集合里的数据是唯一的不能重复,是通过哈希表实现的。

127.0.0.1:6379> sadd memory_set set1
(integer) 1
127.0.0.1:6379> sadd memory_set set1
(integer) 0

   sadd表示向set中添加数据,其中memory_set为key,set1为value。注意:当我们添加set1的时候,打印的integer后的数字是1,表示添加成功,但是执行第二条的时候,由于还是添加的set1,根据set的数据是唯一的特性,第二次添加set1打印0,表示失败,不能重复添加。我们可以通过sadd命令多添加几条数据。我们可以通过smember命令来获取set里的数据:

127.0.0.1:6379> smembers memory_set
1) "set3"
2) "set2"
3) "set1"

以下是几个常用的set操作
scard:获取集合的成员数

127.0.0.1:6379> scard memory_set
(integer) 3

spop:移除并返回集合中的一个随机元素

127.0.0.1:6379> spop memory_set
"set3

4. zset
   zset跟集合一样,是数据唯一的,不同点在于zset的每个成员都会关联一个double的分数,然后通过这个关联的分数来对zset进行排序。

127.0.0.1:6379> zadd memory_zset 1 zset1
(integer) 1

   我们通过zadd来向zset添加一条数据,其中memory_zset是key,1是score(关联的分数),zset1是添加的数据。我们可以通过该命令来多添加几条数据。由于zset是有序集合,我们可以通过遍历来获取他的数据:

127.0.0.1:6379> zrange memory_zset 0 10
1) "zset1"
2) "zset2"
3) "zset3"

还可以通过追加withscores参数来遍历

127.0.0.1:6379> zrange memory_zset 0 10 withscores
1) "zset1"
2) "1"
3) "zset2"
4) "2"
5) "zset3"
6) "3"

这里可以看到我们在添加数据的时候,设置的score也打印了出来

以下是几个常用的set操作
zcard:获取zset的成员数

127.0.0.1:6379> zcard memory_zset
(integer) 3

zrem:移除有序集合中的一个或多个成员

127.0.0.1:6379> zrem memory_zset zset1
(integer) 1

5. hash
hash是一个field和value的映射表,比较适合用来存储对象

127.0.0.1:6379> hmset memory_hash f1 hash1
OK

   我们可以通过hmset命令来向hash插入一条数据,其中memory_hash是key,f1表示field,hash1表示value。注意:由于hash是field和valuede 映射表,所以添加重复field会把旧的数据替换掉,如我们已经向memory_hash添加了一个field为f1的数据hash1,如果我们再添加一条数据,field还是为f1,但是value是hash2,那hash中不会增加一条新数据,而是field为f1的那条数据的value会被替换为hash2,这里要特别注意一下。我们可以通过hgetall获取hash里的所有数据:

hgetall memory_hash
1) "f1"
2) "hash1"

其中f1表示field,hash1表示value
以下是几个hash常用的操作
hget:获取存储在hash中指定field的value

127.0.0.1:6379> hget memory_hash f1
"hash1"

hdel:删除一个或多个hash中的field

127.0.0.1:6379> hdel memory_hash f1
(integer) 1

结语

   以上只是对Redis的一个简单介绍及Redis的几种数据类型的介绍,Redis每种数据结构都提供了丰富的命令操作,读者可以从官网查询更详细用法,后续随着Redis的深入学习会编写更多关于Redis的相关知识,有兴趣的朋友可以关注一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值