当前位置: 移动技术网 > IT编程>数据库>MongoDB > Redis安装及使用详解

Redis安装及使用详解

2019年03月23日  | 移动技术网IT编程  | 我要评论

推荐在linux系统上安装,这里我采用centos6:

redis采用3.0.0版本,官网下载即可

由于redis是c语言编写,需要安装gcc(部分linux自带gcc)

yum install gcc-c++

解压安装包:

tar -zxvf redis-3.0.0.tar.gz

编译redis源码:

cd redis-3.0.0
make

安装:

make install prefix=/usr/local/redis

启动redis:

第一种:不推荐

cd /usr/local/redis/bin
./redis-server

第二种:使用配置文件

cd redis-3.0.0
cp redis.conf /usr/local/redis/bin
vi /usr/local/redis/bin/redis.conf

修改daemonize为yes,然后:wq保存

启动:

./redis-server redis.conf

关闭:

./redis-cli shutdown

 

连接redis:redis默认是16个数据库

第一种:直接使用自带客户端连接

./redis-cli -h 127.0.0.1 -p 6379

第二种:使用windows的图形化界面客户端连接(直观)

注意:如果有连接不到但是确定已经开启了redis的情况,需要配置防火墙

 

重点要关注的是第三点:java连接,稍后再说,先来看一看数据类型

 

在自带客户端中进行操作:选择第一个(也就是redis-0)数据库

127.0.0.1:6379> select 0
ok

 

string数据类型:

127.0.0.1:6379> set key value
ok
127.0.0.1:6379> get key
"value"
127.0.0.1:6379> 

 

多条信息存储和获取:

127.0.0.1:6379> mset k1 v1 k2 v2
ok
127.0.0.1:6379> mget k1 k2
1) "v1"
2) "v2"
127.0.0.1:6379> 

 

根据key删除信息:

127.0.0.1:6379> del k1 k2
(integer) 2

 

数值增减:

递增:

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3
127.0.0.1:6379> get num
"3"
127.0.0.1:6379> 
127.0.0.1:6379> incrby num 2
(integer) 2
127.0.0.1:6379> incrby num 2
(integer) 4
127.0.0.1:6379> incrby num 2
(integer) 6
127.0.0.1:6379> get num
"6"

递减:

127.0.0.1:6379> decr num
(integer) -1
127.0.0.1:6379> decr num
(integer) -2
127.0.0.1:6379> decr num
(integer) -3
127.0.0.1:6379> get num
"-3"
127.0.0.1:6379> decrby num 3
(integer) -3
127.0.0.1:6379> decrby num 3
(integer) -6
127.0.0.1:6379> decrby num 3
(integer) -9
127.0.0.1:6379> get num
"-9"

 

一些其他命令的示范:

127.0.0.1:6379> set str hello
ok
127.0.0.1:6379> append str " world!"
(integer) 12
127.0.0.1:6379> get str
"hello world!"

 

hash类型:可以理解为hashmap

代替hash类型的方式:将需要保存的信息转换成json字符串

hset命令,插入和更新没有区分

127.0.0.1:6379> hset user username root
(integer) 1
127.0.0.1:6379> hset user password root
(integer) 1

多条插入:

127.0.0.1:6379> hmset user username root password root
ok

当不存在时候赋值:当字段不存在时赋值,存在的话不做任何操作

127.0.0.1:6379> hset user username root
(integer) 1
127.0.0.1:6379> hsetnx user username admin
(integer) 0
127.0.0.1:6379> 

 取hash中的值:

127.0.0.1:6379> hget user username
"root"
127.0.0.1:6379> hmget user username password
1) "root"
2) "123"
127.0.0.1:6379> hgetall user
1) "username"
2) "root"
3) "password"
4) "123"

 删除hash中的字段:

127.0.0.1:6379> hdel user username
(integer) 1
127.0.0.1:6379> hgetall user
1) "password"
2) "123"

hash字段增加数字:

127.0.0.1:6379> hset user age 30
(integer) 1
127.0.0.1:6379> hincrby user age 2
(integer) 32
127.0.0.1:6379> hget user age
"32"

 判断字段是否存在:

127.0.0.1:6379> hexists user age
(integer) 1
127.0.0.1:6379> hexists user sex
(integer) 0

只获取key或者value:

127.0.0.1:6379> hkeys user
1) "password"
2) "age"
127.0.0.1:6379> hvals user
1) "123"
2) "32"

获取大小:

127.0.0.1:6379> hlen user
(integer) 2

 

在实际中的应用:比如添加商品

127.0.0.1:6379> hmset item:1001 name iphonex price 7000 id 1001 color black
ok
127.0.0.1:6379> hkeys item:1001
1) "name"
2) "price"
3) "id"
4) "color"

 

list类型:就像是java的arraylist

向左边或者右边添加元素:

127.0.0.1:6379> lpush list:1 1 2 3
(integer) 3
127.0.0.1:6379> rpush list:1 4 5 6 
(integer) 6

最终list:1是什么呢?

1->2 1-> 3 2 1->3 2 1 4->3 2 1 4 5->3 2 1 4 5 6

 

根据开始索引和结束索引查看:

127.0.0.1:6379> lrange list:1 1 3
1) "2"
2) "1"
3) "4"

如果想全部读取,设置为0到-1即可:

127.0.0.1:6379> lrange list:1 0 -1
1) "3"
2) "2"
3) "1"
4) "4"
5) "5"
6) "6"

从列表的两端弹出元素:

127.0.0.1:6379> lpop list:1
"3"
127.0.0.1:6379> rpop list:1
"6"
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"
3) "4"
4) "5"

 列表长度:

127.0.0.1:6379> llen list:1
(integer) 4

删除:-1:从右往左删除第一个5;1:从左往右删除第一个5;0:删除所有的5

127.0.0.1:6379> lrem list:1 -1 5
(integer) 0
127.0.0.1:6379> lrem list:1 1 5
(integer) 0

获取指定索引:

127.0.0.1:6379> lindex list:1 2
"4"
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"
3) "4"

设置指定索引的值:

127.0.0.1:6379> lset list:1 2 100
ok
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"
3) "100"

 只保留列表某一部分元素:

127.0.0.1:6379> ltrim list:1 0 1
ok
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"

 插入:linsert [name] [after/before] [value] [new value]

127.0.0.1:6379> lrange list:1 0 -1
1) "9"
2) "7"
3) "2"
4) "1"
127.0.0.1:6379> linsert list:1 before 2 100
(integer) 5
127.0.0.1:6379> lrange list:1 0 -1
1) "9"
2) "7"
3) "100"
4) "2"
5) "1"

 

set类型:

特点:不重复,无序

增删查:

127.0.0.1:6379> sadd set a b c d
(integer) 4
127.0.0.1:6379> sadd set a
(integer) 0
127.0.0.1:6379> srem set d
(integer) 1
127.0.0.1:6379> smembers set
1) "c"
2) "b"
3) "a"

差集运算:[1,2,3]和[2,3,4]的差集

127.0.0.1:6379> sadd set1 1 2 3 
(integer) 3
127.0.0.1:6379> sadd set2 2 3 4 
(integer) 3
127.0.0.1:6379> sdiff set1 set2
1) "1"
127.0.0.1:6379> sdiff set2 set1
1) "4"

交集运算:[1,2,3]和[2,3,4]的交集

127.0.0.1:6379> sinter set1 set2
1) "2"
2) "3"

并集运算:[1,2,3]和[2,3,4]的并集

127.0.0.1:6379> sunion set1 set2
1) "1"
2) "2"
3) "3"
4) "4"

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网