Redis(REmote DIctionary Server) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis应用场景
用来做缓存(ehcache/memcached)——redis的所有数据是放在内存中的(内存数据库) 可以在某些特定应用场景下替代传统数据库——比如社交类的应用 在一些大型系统中,巧妙地实现一些特定的功能:session共享、购物车 只要你有丰富的想象力,redis可以用在可以给你无限的惊喜…….
http://www.redis.cn/documentation.html
redis可视化工具
sudo snap install redis-desktop-manager
Redis 版本号采用标准惯例:主版本号.副版本号.补丁级别,一个副版本号就标记为一个标准发行版本,例如 1.2,2.0,2.2,2.4,2.6,2.8,奇数的副版本号用来表示非标准版本,例如2.9.x发行版本是Redis 3.0标准版本的非标准发行版本。
第一步:下载
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
第二步:解压
tar xzf redis-4.0.11.tar.gz
第三步:复制,放到/usr/local目录下面( 先创建文件夹/usr/local/redis/ )
mv ./redis-4.0.11/* /usr/local/redis/
第四步:进入redis目录
cd /usr/local/redis/
第五步:生成
sudo make
第六步: 测试,这段运行时间会比较长
sudo make test
第七步:安装,将Redis的命令安装到/usr/local/bin/目录
sudo make install
第八步: 安装完成后,我们进入目录/usr/local/bin中查看
cd /usr/local/bin
ls -all
第九步: 配置文件,移动到/etc/目录下
配置文件目录为/usr/local/redis/redis.conf
没有这个目录 创建/etc/redis/
sudo cp /usr/local/redis/redis.conf /etc/redis/
启动redis 服务 后面是配置路径
lbc@lbc-X550CC:~$ sudo redis-server /etc/redis/redis.conf
12183:C 29 Sep 15:10:15.479 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12183:C 29 Sep 15:10:15.479 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=12183, just started
12183:C 29 Sep 15:10:15.479 # Configuration loaded
启动redis数据库
lbc@lbc-X550CC:~$ redis-cli
一些操作命令可以试着敲击 以后会有详细教程 现在时间不够没空写
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> set redis 1803
OK
127.0.0.1:6379[3]> get redis
"1803"
127.0.0.1:6379[3]> setex redis 15 abcd
OK
127.0.0.1:6379[3]> get redis
"abcd"
127.0.0.1:6379[3]> get redis
"abcd"
127.0.0.1:6379[3]> get redis
"abcd"
127.0.0.1:6379[3]> get redis
"abcd"
127.0.0.1:6379[3]> get redis
"abcd"
127.0.0.1:6379[3]> get redis
(nil)
127.0.0.1:6379[3]> set name laowang
OK
127.0.0.1:6379[3]> setnx name 123456
(integer) 0
127.0.0.1:6379[3]> get name
"laowang"
127.0.0.1:6379[3]> setrange name 3 4567
(integer) 7
127.0.0.1:6379[3]> get name
"lao4567"
127.0.0.1:6379[3]> set name 1234wang
OK
127.0.0.1:6379[3]> get name
"1234wang"
127.0.0.1:6379[3]> mset name1 zhangsan name2 lisi name3 wangwu
OK
127.0.0.1:6379[3]> get name1 name2
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379[3]> mget name1 name2 name3
1) "zhangsan"
2) "lisi"
3) "wangwu"
127.0.0.1:6379[3]> append name1 san
(integer) 11
127.0.0.1:6379[3]> mget name1 name2 name3
1) "zhangsansan"
2) "lisi"
3) "wangwu"
127.0.0.1:6379[3]> del name2 name3
(integer) 2
127.0.0.1:6379[3]> get name2
(nil)
127.0.0.1:6379[3]> keys *
1) "name"
2) "name1"
127.0.0.1:6379[3]> keys '.*3'
(empty list or set)
127.0.0.1:6379[3]> keys '*3'
(empty list or set)
127.0.0.1:6379[3]> keys '*1'
1) "name1"
127.0.0.1:6379[3]> keys '*a'
(empty list or set)
127.0.0.1:6379[3]> keys '*a*'
1) "name"
2) "name1"
127.0.0.1:6379[3]> exists name1
(integer) 1
127.0.0.1:6379[3]> randomkey
"name1"
127.0.0.1:6379[3]> randomkey
"name1"
127.0.0.1:6379[3]> randomkey
"name"
127.0.0.1:6379[3]> randomkey
"name"
127.0.0.1:6379[3]> randomkey
"name1"
127.0.0.1:6379[3]> randomkey
"name"
127.0.0.1:6379[3]> randomkey
"name1"
127.0.0.1:6379[3]> randomkey
"name"
127.0.0.1:6379[3]> randomkey
"name"
127.0.0.1:6379[3]> randomkey
"name"
127.0.0.1:6379[3]> randomkey
"name"
127.0.0.1:6379[3]> randomkey
"name"
127.0.0.1:6379[3]> type name3
none
127.0.0.1:6379[3]> type name1
string
127.0.0.1:6379[3]> expire name1 10
(integer) 1
127.0.0.1:6379[3]> exists name1
(integer) 0
127.0.0.1:6379[3]> expire name 60
(integer) 1
127.0.0.1:6379[3]> expire name 60
(integer) 1
127.0.0.1:6379[3]> expire name 60
(integer) 1
127.0.0.1:6379[3]> ttl name
(integer) 50
127.0.0.1:6379[3]> ttl name
(integer) 49
127.0.0.1:6379[3]> ttl name
(integer) 48
127.0.0.1:6379[3]> ttl name
(integer) 47
127.0.0.1:6379[3]> ttl name
(integer) 47
127.0.0.1:6379[3]> ttl name
(integer) 46
127.0.0.1:6379[3]> ttl name
(integer) 45
127.0.0.1:6379[3]> ttl name
(integer) 15
127.0.0.1:6379[3]> ttl name
(integer) 14
127.0.0.1:6379[3]> ttl name
(integer) 13
127.0.0.1:6379[3]> ttl name
(integer) 13
127.0.0.1:6379[3]> ttl name
(integer) 12
127.0.0.1:6379[3]> ttl name
(integer) 11
127.0.0.1:6379[3]> ttl name
(integer) 11
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> get a 1803
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379[3]> set a 1803
OK
127.0.0.1:6379[3]> ttl a
(integer) -1
127.0.0.1:6379[3]> hset hkey name lisi age 30
(integer) 2
127.0.0.1:6379[3]> mget hkey
1) (nil)
127.0.0.1:6379[3]> mget name
1) (nil)
127.0.0.1:6379[3]> exists
(error) ERR wrong number of arguments for 'exists' command
127.0.0.1:6379[3]> hmset hkey1 name1 zhangsan score 100 gender 0
OK
127.0.0.1:6379[3]> hget hkey name
"lisi"
127.0.0.1:6379[3]> hmget hkey1 name
1) (nil)
127.0.0.1:6379[3]> hmget hkey1 name1
1) "zhangsan"
127.0.0.1:6379[3]> hmget hkey1 name1 age
1) "zhangsan"
2) (nil)
127.0.0.1:6379[3]> hmget hkey1 name1 score
1) "zhangsan"
2) "100"
127.0.0.1:6379[3]> hkeys hkey1
1) "name1"
2) "score"
3) "gender"
127.0.0.1:6379[3]> hvals hkey1
1) "zhangsan"
2) "100"
3) "0"
127.0.0.1:6379[3]> hdel hkey1 score
(integer) 1
127.0.0.1:6379[3]> hkeys hkey1
1) "name1"
2) "gender"
127.0.0.1:6379[3]> del hkey1
(integer) 1
127.0.0.1:6379[3]> keys *
1) "hkey"
2) "a"
127.0.0.1:6379[3]> HEXISTS hkey name
(integer) 1
127.0.0.1:6379[3]> HGETALL hkey
1) "name"
2) "lisi"
3) "age"
4) "30"