Redis
Peng's Blog 只记录和技术相关的东西

Redis

2017-08-11

Redis介绍

Redis是用C语言编写的,基于内存的,键值对存储数据库。是目前最流行的键值对数据库。

是NoSQL里面,非常非常重要的一种。

哪些公司用了它?

GitHub、百度、新浪、腾讯、Twitter、美团、暴雪等


安装

Mac系统:

brew install redis

启动服务:brew services start redis

关闭服务:brew services stop redis

连接:

本机:redis-cli

服务器:redis-cli -h host -p port -a password

检测服务是否启动:ping

它会给你回一句:pong

支持的数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

都玩了一遍,挺好玩的。

增删改查

字符串

插入数据:set tanpeng pangzi (注意,不需要双引号那些,当然加了也行)

查找数据:get tanpeng

修改数据:getset key value (返回的是old数据)

hash

Redis hash 是一个String 类型的field和value的映射表,hash特别适合用于存储对象。

每个Hash可以存储 2^32-1个键值对(40)多亿。

创建数据:hmset xxx(大名字) key1 value1 key2 value2 key3 value3 等等

查找数据:hgetall xxx(大名字)

还一些乱七八糟的,用到的时候再查吧

列表 list

是简单的字符串列表,按照插入顺序排序,你可以选择添加一个元素到头部或者尾部。

一个列表最多可以包含 2^32 -1 个数据

创建数据:

push name value1

push name value2

push name values3

push name values4

查找数据:lrange name 0 3 (从第0个到第3个,一共4个,也就是说两遍都是闭包)

集合set

Redis的set是String类型的无需集合。集合成员是唯一的,不允许重复元素的出现。

通过哈希表实现的,所以增删改查的复杂度都是 O(1)

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

创建数据:

sadd name xx

sadd name xx2

sadd name xx3

查询数据:smembers name

有序集合sorted set

也是set,所以不允许重复元素的出现。

创建数据:

zadd name 1 xx

zadd name 2 xx

zadd name 3 xx

查询数据:zrange name 0 2 withscores


高级运用

数据备份

save

该命令会在Redis安装目录中创建 dump.rdb 文件

bgsave

也是备份,不同的地方在于,该命令在后台执行。

恢复数据

config get dir

dir是备份数据的目录

其它

分区、管道技术、安全、性能测试等等。

在代码中使用redis十分简单,查一下就可以了


过程预览

~ brew install redis
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (caskroom/cask, homebrew/core).
==> New Formulae
ceres-solver            cfitsio                 flann                   hwloc                   libpq                   sbt@0.13                vtk
==> Updated Formulae
akamai               closure-compiler     git                  ipython@5            metabase             pandoc-crossref      sleuthkit            youtube-dl
angular-cli          clutter-gtk          gitg                 libfabric            mongo-c-driver       pgcli                subversion           zsh ✔
aptly                cmake                github-markdown-toc  libsoup              mpdscribble          pjproject            syncthing
awscli               cmark-gfm            gnupg                makeself             node                 postgresql           tcl-tk
bash-snippets        consul               gofabric8            mariadb@10.0         node-build           postgresql@9.4       tippecanoe
bibtexconv           crowdin              grpc                 mariadb@10.1         opencoarrays         postgresql@9.5       vault
bit                  e2fsprogs            influxdb             media-info           openjpeg             potrace              webpack
cc65                 faas-cli             insect               mediaconch           openrct2             pre-commit           wireguard-tools
chakra               ficy                 ipython              mercurial            paket                sbt                  x264

==> Downloading https://homebrew.bintray.com/bottles/redis-4.0.1.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring redis-4.0.1.el_capitan.bottle.tar.gz
==> Caveats
To have launchd start redis now and restart at login:
  brew services start redis
Or, if you don't want/need a background service you can just run:
  redis-server /usr/local/etc/redis.conf
==> Summary
🍺  /usr/local/Cellar/redis/4.0.1: 13 files, 2.8MB
➜  ~ brew services start redis
==> Successfully started `redis` (label: homebrew.mxcl.redis)
➜  ~ redis
zsh: command not found: redis
➜  ~ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set tanpeng banzhang
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dump tanpeng
(nil)
127.0.0.1:6379[1]> exist tanpeng
(error) ERR unknown command 'exist'
127.0.0.1:6379[1]> EXISTS tanpeng
(integer) 0
127.0.0.1:6379[1]> get tanpeng
(nil)
127.0.0.1:6379[1]> set tanpeng banzhang
OK
127.0.0.1:6379[1]> get tanpeng
"banzhang"
127.0.0.1:6379[1]> LPUSH runoobkey redis
(integer) 1
127.0.0.1:6379[1]> LPUSH runoobkey redis2
(integer) 2
127.0.0.1:6379[1]> LPUSH runoobkey redis3
(integer) 3
127.0.0.1:6379[1]> LPUSH runoobkey redis4
(integer) 4
127.0.0.1:6379[1]> lrange runoobkey
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379[1]> LRANGE runoobkey
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379[1]> LRANGE runoobkey 0 10
1) "redis4"
2) "redis3"
3) "redis2"
4) "redis"
127.0.0.1:6379[1]> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379[1]> HMSET runoobkey2 name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
127.0.0.1:6379[1]> hgetall runoobkey2
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"
127.0.0.1:6379[1]> sadd tan 1
(integer) 1
127.0.0.1:6379[1]> sadd tan 2
(integer) 1
127.0.0.1:6379[1]> sadd tan 3
(integer) 1
127.0.0.1:6379[1]> sadd tan 4
(integer) 1
127.0.0.1:6379[1]> sadd tan 3
(integer) 0
127.0.0.1:6379[1]> sadd tan 6
(integer) 1
127.0.0.1:6379[1]> smembers tan
1) "1"
2) "2"
3) "3"
4) "4"
5) "6"
127.0.0.1:6379[1]> zadd peng 1
(error) ERR wrong number of arguments for 'zadd' command
127.0.0.1:6379[1]> zadd t 1 tan
(integer) 1
127.0.0.1:6379[1]> zadd t 3 poeng
(integer) 1
127.0.0.1:6379[1]> zadd t 2 xiannv
(integer) 1
127.0.0.1:6379[1]> zrange t 0 3 withscores
1) "tan"
2) "1"
3) "xiannv"
4) "2"
5) "poeng"
6) "3"
127.0.0.1:6379[1]>


参考资料

1、《Redis教程》。http://www.runoob.com/redis/redis-tutorial.html

2、Redis官网。https://redis.io/

3、维基百科,Redis。https://zh.wikipedia.org/wiki/Redis


上一篇 MongoDB

下一篇 进程通信IPC

Comments

评论功能暂停使用,如需跟作者讨论请联系底部的GitHub