Redis安装及使用详解
推荐在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"
上一篇: Python牛刀小试密码爆破
下一篇: 使用Django连接Mysql数据库步骤