Redis的安装配置及使用

一、实验目的
1.在centos6.5下配置Redis并使用。
2.Redis所支持的数据结构

二、实验环境及依照
1.配置环境:centos6.5
2.tcl版本:tcl8.6.1
3.Redis安装包:redis-2.8.3
4.内容依照
(1)String
Value:字符串,整数和浮点数
读写操作:读写整个或部分字符串,对整数/浮点数递增/递减
可使用指令:SET,GET,DEL等
(2)List
Value:字符串链表
读写操作:对链表的两端进行push/pop操作,读一项或多项字符串,按照值查找或删除某个字符串
可使用命令:RPUSH,LPUSH,LRANGE,LINDEX,LPOP,RPOP,LLEN等
(3)Set
Value:无序的字符串集合,字符串不能重复
读写操作:插入,删除和读取某个字符串,查看某个字符串是否属于集合,对集合执行归,并,查操作
可使用命令:SADD,AREM,SISMEMBER,SCARD,SPOP,SMOVE,SINTER,SUNION,SDIFF等
(4)Hash
Value:无序的key到value的hashtable
读写操作:插入,删除和读取某项,读写整个Hashtable
可使用命令:HSET…field…,HGET…field,HEXISTS…field,HLEN,HDEL,HSETNX…field等
(5)Zset
Value:字符串集合,每个字符串映射到一个浮点数分数,按分数排序
读写操作:插入,删除和读取某项,根据分数范围读取
可使用命令:ZADD,ZCARD,ZCOUNT,ZINXRBY,ZRANGE,ZREVRANK

三、实验内容
1、Redis依赖gcc和tcl环境,所以要先安装gcc和tcl
1.执行

yum install gcc-c++

安装gcc,安装过程中提示是否继续,直接输入y即可,直到完成,如下:

在这里插入图片描述
2.执行

yum install -y tcl

安装tcl,完成如下:
在这里插入图片描述

2.下载redis,执行
(1)退出root权限:

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

(2)解压到目录,进入redis解压目录,依次执行下述命令,编译安装redis:

tar zxvf redis-2.8.3.tar.gz

(3)进入解压后的redis目录使用make命令编译
(4)进入解压的src目录下运行make test 测试是否可以安装

在这里插入图片描述

3、修改配置文件
redis默认处于保护模式,只能通过127.0.0.1本地连接,打开redis安装目录下的redis.conf
1)注释bind 127.0.0.1
2) redis默认不是以守护线程的方式运行,默认以前端模式运行,修改daemonize为yes,即修改为:daemonize yes
3)修改protected-model为no,即修改为:protected-model no

4.启动和关闭Redis
在这里插入图片描述
指定配置文件启动redis:

./src/redis-server redis.conf

启动后如下所示:
在这里插入图片描述
再打开一个终端执行:

./src/redis-server

在这里插入图片描述

关闭时:

127.0.0.1:6379> quit
[hust@master redis-5.0.4]$ ./src/redis-cli shutdown
[hust@master redis-5.0.4]$ 

在这里插入图片描述在这里插入图片描述

数据结构:

String

1.string 作为字符串

127.0.0.1:6379> exists myphone
(integer) 0
127.0.0.1:6379> append myphone "nokia"
(integer) 5
127.0.0.1:6379> append myphone " - 1110"
(integer) 12
127.0.0.1:6379> set greeting "hello,my friend"
OK
127.0.0.1:6379> getrange greeting 0 4
"hello"
127.0.0.1:6379> getrange greeting -1 -5
""
127.0.0.1:6379> getrange greeting -3 -1
"end"
127.0.0.1:6379> getrange greeting 0 -1
"hello,my friend"
127.0.0.1:6379> getrange greeting 0 1008611
"hello,my friend"
127.0.0.1:6379> setrange greeting 6 "Redis"
(integer) 15
127.0.0.1:6379> get greeting
"hello,Redisiend"
127.0.0.1:6379> setbit bit 10086 1
(integer) 0
127.0.0.1:6379> getbit bit 10086
(integer) 1
127.0.0.1:6379> getbit bit 100
(integer) 0
127.0.0.1:6379> 

2.string作为整数或浮点数

127.0.0.1:6379> set rank 50
OK
127.0.0.1:6379> incrby rank 20
(integer) 70
127.0.0.1:6379> get rank
"70"
127.0.0.1:6379> exists counter
(integer) 0
127.0.0.1:6379> incrby counter 30
(integer) 30
127.0.0.1:6379> get counter
"30"
127.0.0.1:6379> set book "long long ago..."
OK
127.0.0.1:6379> incrby book 200
(error) ERR value is not an integer or out of range
127.0.0.1:6379> 

List
基本命令

127.0.0.1:6379> rpush list-key item1
(integer) 1
127.0.0.1:6379> rpush list-key item2
(integer) 2
127.0.0.1:6379> rpush list-key item3
(integer) 3
127.0.0.1:6379> lrange list-key 0 -1
1) "item1"
2) "item2"
3) "item3"
127.0.0.1:6379> lpush list-key item0
(integer) 4
127.0.0.1:6379> lrange list-key 0 -1
1) "item0"
2) "item1"
3) "item2"
4) "item3"
127.0.0.1:6379> lindex list-key 1
"item1"
127.0.0.1:6379> lpop list-key
"item0"
127.0.0.1:6379> lrange list-key 0 -1
1) "item1"
2) "item2"
3) "item3"
127.0.0.1:6379> llen list-key
(integer) 3
127.0.0.1:6379> rpop list-key
"item3"
127.0.0.1:6379> llen list-key
(integer) 2
127.0.0.1:6379> 

高级命令

127.0.0.1:6379> lrange list-key 0 -1
1) "item1"
2) "item2"
127.0.0.1:6379> ltrim list-key 1 -1
OK
127.0.0.1:6379> lrange list-key 0 -1
1) "item2"
127.0.0.1:6379> ltrim list-key 10086 1
OK
127.0.0.1:6379> lrange list-key 0 -1
(empty list or set)
127.0.0.1:6379> rpush list-key "ello"
(integer) 1
127.0.0.1:6379> rpush list-key "world"
(integer) 2
127.0.0.1:6379> linsert list-key before "world" "there"
(integer) 3
127.0.0.1:6379> lrange list-key 0 -1
1) "ello"
2) "there"
3) "world"
127.0.0.1:6379> lset list-key 1 "here"
OK
127.0.0.1:6379> lrange list-key 0 -1
1) "ello"
2) "here"
3) "world"
127.0.0.1:6379> lpop list-key
"ello"
127.0.0.1:6379> lrange list-key 0 -1
1) "here"
2) "world"
127.0.0.1:6379> llen list-key
(integer) 2
127.0.0.1:6379> rpush list1 item1
(integer) 1
127.0.0.1:6379> rpush list1 item2
(integer) 2
127.0.0.1:6379> rpush list2 item3
(integer) 1
127.0.0.1:6379> brpoplpush list2 list1 100
"item3"
127.0.0.1:6379> brpoplpush list2 list1 100
(nil)
(100.04s)
127.0.0.1:6379> lrange list1 0 -1
1) "item3"
2) "item1"
3) "item2"
127.0.0.1:6379> brpoplpush list1 list2 100
"item2"
127.0.0.1:6379> lrange list1 0 -1
1) "item3"
2) "item1"
127.0.0.1:6379> lrange list2 0 -1
1) "item2"
127.0.0.1:6379> blpop list1 100
1) "list1"
2) "item3"
127.0.0.1:6379> blpop list1 100
1) "list1"
2) "item1"
127.0.0.1:6379> blpop list1 10
(nil)
(10.10s)
127.0.0.1:6379> 

Set

单个Set的操作命令

127.0.0.1:6379> sadd set-key item1
(integer) 1
127.0.0.1:6379> sadd set-key item2
(integer) 1
127.0.0.1:6379> sadd set-key item3
(integer) 1
127.0.0.1:6379> sadd set-key item1
(integer) 0
127.0.0.1:6379> smembers set-key
1) "item3"
2) "item2"
3) "item1"
127.0.0.1:6379> scard set-key
(integer) 3
127.0.0.1:6379> sismember set-key item4
(integer) 0
127.0.0.1:6379> sismember set-key item1
(integer) 1
127.0.0.1:6379> srem set-key item2
(integer) 1
127.0.0.1:6379> srem set-key item2
(integer) 0
127.0.0.1:6379> smembers set-key
1) "item3"
2) "item1"
127.0.0.1:6379> srandmember set-key
"item1"
127.0.0.1:6379> spop set-key
"item3"
127.0.0.1:6379> smembers set-key
1) "item1"
127.0.0.1:6379> 

操作多个set的命令

127.0.0.1:6379> sadd set1 item1
(integer) 1
127.0.0.1:6379> sadd set1 item2
(integer) 1
127.0.0.1:6379> sadd set2 item1
(integer) 1
127.0.0.1:6379> sadd set2 item3
(integer) 1
127.0.0.1:6379> sadd set2 item4
(integer) 1
127.0.0.1:6379> smembers set1
1) "item2"
2) "item1"
127.0.0.1:6379> smembers set2
1) "item3"
2) "item4"
3) "item1"
127.0.0.1:6379> smove set2 set1 item3
(integer) 1
127.0.0.1:6379> smembers set1
1) "item3"
2) "item2"
3) "item1"
127.0.0.1:6379> smembers set2
1) "item4"
2) "item1"
127.0.0.1:6379> sinter set1 set2
1) "item1"
127.0.0.1:6379> sunion set1 set2
1) "item3"
2) "item4"
3) "item2"
4) "item1"
127.0.0.1:6379> sdiff set1 set2
1) "item3"
2) "item2"
127.0.0.1:6379> sdiff set2 set1
1) "item4"
127.0.0.1:6379> 

Hash
对单个key/value操作的命令

127.0.0.1:6379> hset myhash field1 "stephen"
(integer) 1
127.0.0.1:6379> hget myhash field1
"stephen"
127.0.0.1:6379> hget myhash field2
(nil)
127.0.0.1:6379> hset myhash field2 "liu"
(integer) 1
127.0.0.1:6379> hlen myhash
(integer) 2
127.0.0.1:6379> hexists myhash field1
(integer) 1
127.0.0.1:6379> hdel myhash field1
(integer) 1
127.0.0.1:6379> hdel myhash field1
(integer) 0
127.0.0.1:6379> hexists myhash field1
(integer) 0
127.0.0.1:6379> hsetnx myhash field1 stephen
(integer) 1
127.0.0.1:6379> hsetnx myhash field1 stephen
(integer) 0
127.0.0.1:6379> del myhash
(integer) 1
127.0.0.1:6379> hset myhash field 5
(integer) 1
127.0.0.1:6379> hincrby myhash field 1
(integer) 6
127.0.0.1:6379> hincrby myhash field -1
(integer) 5
127.0.0.1:6379> hincrby myhash field -10
(integer) -5
127.0.0.1:6379> 

批量操作key/value的命令

127.0.0.1:6379> del myhash
(integer) 1
127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"
OK
127.0.0.1:6379> hmget myhash field1 field2 field3
1) "hello"
2) "world"
3) (nil)
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field2"
4) "world"
127.0.0.1:6379> hkeys myhash
1) "field1"
2) "field2"
127.0.0.1:6379> hvals myhash
1) "hello"
2) "world"
127.0.0.1:6379> 

Zset
操纵单个zset的命令

127.0.0.1:6379> zadd myZset 1 "one"
(integer) 1
127.0.0.1:6379> zadd myZset 2 "two" 3 "three"
(integer) 2
127.0.0.1:6379> zrange myZset 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> zrank myZset one
(integer) 0
127.0.0.1:6379> zrank myZset four
(nil)
127.0.0.1:6379> zcard myZset
(integer) 3
127.0.0.1:6379> zcount myZset 1 2
(integer) 2
127.0.0.1:6379> zrem myZset one two
(integer) 2
127.0.0.1:6379> zcard myZset
(integer) 1
127.0.0.1:6379> zscore myZset two
(nil)
127.0.0.1:6379> zincrby myZset 2 one
"2"
127.0.0.1:6379> zincrby myZset -1 one
"1"
127.0.0.1:6379> zrange myZset 0 -1 withscores
1) "one"
2) "1"
3) "three"
4) "3"
127.0.0.1:6379> del myZset
(integer) 1
127.0.0.1:6379> zadd myZset 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zrangebyscore myZset 1 2
1)  "one"
2) "two"
127.0.0.1:6379> zrangebyscore myZset (1 2
1) "two"
127.0.0.1:6379> zrangebyscore myZset -inf +inf limit 2 3
1) "three"
2) "four"
127.0.0.1:6379> zremrangebyscore myZset 1 2
(integer) 2
127.0.0.1:6379> zrange myZset 0 -1
1) "three"
2) "four"
127.0.0.1:6379> zremrangebyrank myZset 0 -1
(integer) 2
127.0.0.1:6379> zcard myZset
(integer) 0
127.0.0.1:6379> del myZset
(integer) 0
127.0.0.1:6379> zadd myZset 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zrevrange myZset 0 -1 withscores
1) "four"
2) "4"
3) "three"
4) "3"
5) "two"
6) "2"
7) "one"
8) "1"
127.0.0.1:6379> zrevrange myZset 1 3
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrevrank myZset one
(integer) 3
127.0.0.1:6379> zrevrank myZset four
(integer) 0
127.0.0.1:6379> zrevrangebyscore myZset 3 0
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrevrangebyscore myZset 4 0 limit 1 2
1) "three"
2) "two"
127.0.0.1:6379> 

Key

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> set mykey 2
OK
127.0.0.1:6379> set mykey2 "hello"
OK
127.0.0.1:6379> sadd mysetkey 1 2 3
(integer) 3
127.0.0.1:6379> hset mytest username "stephen"
(integer) 1
127.0.0.1:6379> keys my*
1) "mytest"
2) "mykey"
3) "mykey2"
4) "mysetkey"
127.0.0.1:6379> del mykey mykey2
(integer) 2
127.0.0.1:6379> exists mykey
(integer) 0
127.0.0.1:6379> exists mysetkey
(integer) 1
127.0.0.1:6379> move mysetkey 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> exists mysetkey
(integer) 1
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> exists mysetkey
(integer) 0
127.0.0.1:6379> set mykey "hello"
OK
127.0.0.1:6379> rename mykey mykey1
OK
127.0.0.1:6379> get mykey
(nil)
127.0.0.1:6379> get mykey1
"hello"
127.0.0.1:6379> rename mykey mykey1
(error) ERR no such key
127.0.0.1:6379> set oldkey "hello"
OK
127.0.0.1:6379> set newkey "hello"
OK
127.0.0.1:6379> renamenx oldkey newkey
(integer) 0
127.0.0.1:6379> get newkey
"hello"
127.0.0.1:6379> set mykey "hello"
OK
127.0.0.1:6379> expire mykey 100
(integer) 1
127.0.0.1:6379> ttl mykey
(integer) 94
127.0.0.1:6379> persist mykey
(integer) 1
127.0.0.1:6379> ttl mykey
(integer) -1
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> set mykey "hello"
OK
127.0.0.1:6379> expire mykey 100
(integer) 1
127.0.0.1:6379> ttl mykey
(integer) 94
127.0.0.1:6379> expire mykey 20
(integer) 1
127.0.0.1:6379> ttl mykey
(integer) 14
127.0.0.1:6379> set mykey "world"
OK
127.0.0.1:6379> ttl mykey
(integer) -1
127.0.0.1:6379> type mm
none
127.0.0.1:6379> type mykey
string
127.0.0.1:6379> sadd mysetkey 1 2
(integer) 2
127.0.0.1:6379> type mysetkey
set
127.0.0.1:6379> randomkey
"mytest"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> randomkey
(nil)
127.0.0.1:6379> 

事务

1.事务被正常执行

127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr t1
QUEUED
127.0.0.1:6379> incr t2
QUEUED
127.0.0.1:6379> exec
1) (integer) 1
2) (integer) 1
127.0.0.1:6379> 

2.事务中存在失败的命令

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set a 3
QUEUED
127.0.0.1:6379> lpop a
QUEUED
127.0.0.1:6379> set a 4
QUEUED
127.0.0.1:6379> get a
QUEUED
127.0.0.1:6379> exec
1) OK
2) (error) WRONGTYPE Operation against a key holding the wrong kind of value
3) OK
4) "4"
127.0.0.1:6379> 

3.回滚事务

127.0.0.1:6379> set t2 tt
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set t2 ttnew
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> get t2
"tt"
127.0.0.1:6379> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值