redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
它是一个内存型数据库,所有的数据都存在内存中,一旦断电会丢失所有数据。所以它必须要持久化,将数据写入磁盘中。
首先,只需要知道有这些知识点,不需要强迫自己记忆,多练习就好。
安装:
直接下载目前最新的6.0.3 版本,下载地址:
http://download.redis.io/releases/redis-6.0.3.tar.gz
$ wget http://download.redis.io/releases/redis-6.0.3.tar.gz
$ tar zxvf redis-6.0.3.tar.gz
$ cd redis-6.0.3
$ make
$ sudo make install
默认安装到/usr/local/bin/目录。在/usr/local/bin/目录下redis-server 是服务器程序,redis-cli 是客户端程序。
可以使用ln -s 软链接,将目标文件链接到你想要的位置。
ln -s /usr/local/bin/redis-server ~
ln -s /usr/local/bin/redis-cli ~
启动redis: 直接在/usr/local/bin/下,输入./redis-server启动。此时默认加载redis.conf。如果你想使用自定义的conf,那么就在命令后添加自定义文件名。
关闭redis:可以使用 ./redis-cli shutdown。也可以在进入redis后使用shutdown。
持久化:save。
-
字符串类型
SET key value
GET key
例子:
set key hello
get key
-
递增数字
INCR num
-
增加指定的整数
INCRBY key increment
INCRBY bar 2
-
递减数字
DECR key
-
减少指定的整数
DECRBY key decrement
-
增加指定浮点数
INCRBYFLOAT key increment
-
向尾部追加值
APPEND key value
-
获取字符串长度
STRLEN key
-
位操作
GETBIT key offset
setbit key offset [start] [end]
BITCOUNT key [start] [end]
BITOP operation destkey key1 key2 ....
其中位操作是指实际存储的数据的位。
例如:set alphabet A,A的ASCII码是67。实际的值是0010 0011。那么使用setbit alphabet 5 1,其ASCII码为0010 0111。则alphabet的值为“E”。
-
哈希(hash)类型
一种以存储键值对的形式字典结构(key-value)。
哈希类型适合存储对象;使用对象类别和ID构成键名,使用字段表示独享的属性。而字段存储属性值。
hset key field value field value2 field3 value3 这条语句等价于
hmset key field value field value2 field3 value3
例如一扫地机器人, 可以称它为ROBOT:1, 它的功能(function)为清洁(cleaning),它的名称(name)为joy。价格(price)为200元。
那么就可以这样使用语句:
hset ROBOT:1 function cleaning name joy price 200
hgetall key 获取某个哈希的所有类型的字段以及字段对应的值。
HSET的命令不需要区分插入和更新操作。所以修改数据之前不需要判断字段是否存在。
-
列表类型
列表类型可以存储一个有序的字符串列表,常用的操作是向队列两端添加元素,或者获取某个列表内某个范围的值。
向列表中左边添加一个元素。
lpush key1 value2 key2 value2 .....
向列表中右边添加一个元素。
rpush key1 value2 key2 value2 ....
先假设有三个人: cofield、mike、john、joy。
如果使用lpush往列表中添加cofield,则列表为:
如果使用rpush往列表中添加cofield,则列表为:mike、john、joy、cofield。
获取某个范围的值:zrange key start end
下标从0开始逐次递增,同时也有另外一种表示方法:最后一个元素下标为-1。从右往左依次递减。
还是以上面的为例。
cofield、mike、john。 下标从0开始。 cofield(0)、mike(1)、john(2)。
使用zrange man 0 2获取cofield、mike、john。
最后一个元素下标为-1。从右往左依次递减。cofield(-3)、mike(-2)、john(-1)。
使用zrange man -3 -1获取cofield、mike、john。
集合和有序结合,在网上都能搜索到。目前我也不知道用作什么具体应用,等日后我在实际项目中使用Redis后再做补充。