Redis学习

Redis的数据结构:

1,字符串:键名-string

用法:

1 127.0.0.1:6379> get username
2 (nil)
3 127.0.0.1:6379> set username user
4 OK
5 127.0.0.1:6379> get username
6 "user"
7 127.0.0.1:6379> del username
8 (integer) 1

2,链表:键名-list

用法:

1 127.0.0.1:6379> rpush list-key item1 item2                  
2 (integer) 2                                                 
3 
4 127.0.0.1:6379> lrange list-key 0 -1                        
5 1) "item1"                                                  
6 2) "item2"                                                  

rpush向为key为list-key加入元素item1,item2两个元素,为一个列表,用lrange list-key 0 -1,0代表第一个下标,-1为最后一个下标。意思就是第一个到最后一个元素,比如说:

1 127.0.0.1:6379> rpush list-key item3
2 (integer) 3
3 
4 127.0.0.1:6379> lrange list-key 0 -1
5 1) "item1"
6 2) "item2"
7 3) "item3"

在列表中,可以使用lindex查询指定下标的元素:

1 127.0.0.1:6379> lrange list-key 0 -1
2 1) "item1"
3 2) "item2"
4 3) "item3"
5 127.0.0.1:6379> lindex list-key 1
6 "item2"

下标从是从0开始的,所以1是第二个元素。

使用lpop弹出一个元素:

 1 127.0.0.1:6379> lrange list-key 0 -1
 2 1) "item1"
 3 2) "item2"
 4 3) "item3"
 5 4) "item4"
 6 127.0.0.1:6379> lpop list-key
 7 "item1"
 8 127.0.0.1:6379> lrange list-key 0 -1
 9 1) "item2"
10 2) "item3"
11 3) "item4"

这个命令可以弹出列表的首元素。首元素为item1,所以操作了这个命令会返回item1并在列表中去除这个元素,可以把这个列表理解为一个队列

3,集合Set

Set是集合,和list不同之处在于,set只能存储不同的元素。

可以使用sadd来想一个key中添加元素,格式为key  value比如:

1 127.0.0.1:6379> sadd set-key item1
2 (integer) 1
3 127.0.0.1:6379> sadd set-key item2
4 (integer) 1
5 127.0.0.1:6379> sadd set-key item3
6 (integer) 1

使用smembers查看添加的所有元素

1 127.0.0.1:6379> smembers set-key
2 1) "item3"
3 2) "item2"
4 3) "item1"

可以查出这个key中的所有元素,显示的顺序和添加的相反。这个时候我们在添加一个原来已经添加过的值。

1 127.0.0.1:6379> sadd set-key item1
2 (integer) 0
3 127.0.0.1:6379> smembers set-key
4 1) "item3"
5 2) "item2"
6 3) "item1"

并没有出现这个值,说明set中存的内容是互不相同的。

还可以通过sismember查看这个元素是否在set中,比如:

1 127.0.0.1:6379> sismember set-key item3
2 (integer) 1
3 127.0.0.1:6379> sismember set-key item4
4 (integer) 0

存在的返回1,不存在返回0。接下来是删除元素,使用srem删除元素:

1 (integer) 0
2 127.0.0.1:6379> srem set-key item1
3 (integer) 1
4 127.0.0.1:6379> srem set-key item
5 (integer) 0

这个命令会返回删除所影响的元素,0的时候是不影响,意思就是删除失败或者没有这个元素可以删除。

1 127.0.0.1:6379> smembers set-key
2 1) "item3"
3 2) "item2"

4,散列 就是哈希表

散列实际上及时key-value的映射,就是个简单版的redis,向散列中添加只得方式是:

1 127.0.0.1:6379> hset hash-key key1 n1
2 (integer) 1
3 127.0.0.1:6379> hset hash-key key2 n2
4 (integer) 1
5 127.0.0.1:6379>

然后可以查看hgetall是查询整个key为hash-key的散列key和value值,hget是查询特定的key对应的值:

127.0.0.1:6379> hgetall hash-key
1) "key1"
2) "n1"
3) "key2"
4) "n2"
127.0.0.1:6379> hget hash-key key1
"n1"

使用hdel删除

1 127.0.0.1:6379> hdel hash-key key1
2 (integer) 1
3 127.0.0.1:6379> hgetall hash-key
4 1) "key2"
5 2) "n2"

删除了对应的key和value值。

5,有序集合zset

有序集合和hash的存储格式类似,会根据有序集合的值进行排序,值被称为分值,为浮点类型。向zset中添加元素的命令为:zadd

1 127.0.0.1:6379> zadd zset-key 100 member1
2 (integer) 1
3 127.0.0.1:6379> zadd zset-key 99 member0
4 (integer) 1
5 127.0.0.1:6379> zadd zset-key 101 member2
6 (integer) 1

现在查看一下结果,使用zrange命令,这个命令和lrange一样:

1 127.0.0.1:6379> zrange zset-key 0 -1
2 1) "member0"
3 2) "member1"
4 3) "member2"

已经排好序了。还可以查看详情 zrange zset-key 0 -1 withscores:

1 127.0.0.1:6379> zrange zset-key 0 -1 withscores
2 1) "member0"
3 2) "99"
4 3) "member1"
5 4) "99"
6 5) "member2"
7 6) "101"

 可以查询某个区间内的元素zrangebyscore 下面的命令是查看0-90和0-99的区间:

1 127.0.0.1:6379> zrangebyscore zset-key  0 90 withscores
2 (empty list or set)
3 127.0.0.1:6379> zrangebyscore zset-key  0 99 withscores
4 1) "member0"
5 2) "99"
6 3) "member1"
7 4) "99"
8 127.0.0.1:6379>

删除zset的命令

1 127.0.0.1:6379> zrem zset-key member0
2 (integer) 1
3 127.0.0.1:6379> zrem zset-key member0
4 (integer) 0
5 127.0.0.1:6379>

这个命令会返回影响的行数,如果此行存在并且被删除,则返回1,否则返回0。

1 127.0.0.1:6379> zrange zset-key 0 -1 withscores
2 1) "member1"
3 2) "99"
4 3) "member2"
5 4) "101"
6 127.0.0.1:6379>

这样就少了一条记录。

以上就是Redis的基本命令,最后全部删除之前操作的数据!

1 flushall

 

posted @ 2016-09-05 18:01  小马甲奶糖  阅读(547)  评论(2编辑  收藏  举报