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