对Redis现有数据结构测试实验


redis支持的数据结构:strings,lists,hashes,set,sorted set。下面一一来做实验

strings的具体操作有:get/set/setnx,append,strlen,getrange/setrange,incr/decr/incrby/decrby,mget/mset,意思很简单大致都能看明白

get/set就是插数据去数据(key----value对应着来):

  1. redis 127.0.0.1:6379[1]> set test chen  
  2. OK  
  3. redis 127.0.0.1:6379[1]> set test2 zhou  
  4. OK  
  5. redis 127.0.0.1:6379[1]> get test  
  6. "chen"  
  7. redis 127.0.0.1:6379[1]> get test2  
  8. "zhou"  
setnx就是插入数据看看是否存在相同的key值,如果存在则不执行返回0,如果不存在则执行返回1:
  1. redis 127.0.0.1:6379[1]> setnx test 11111  
  2. (integer) 0  
  3. redis 127.0.0.1:6379[1]> get test  
  4. "chen"  
append更是简单了,就是平时用的追加字符:
  1. redis 127.0.0.1:6379[1]> get test  
  2. "chen"  
  3. redis 127.0.0.1:6379[1]> append test @gmail.com  
  4. (integer) 14  
  5. redis 127.0.0.1:6379[1]> get test  
  6. "chen@gmail.com"  
getrange/setrange的用法就是简单的字符串操作,取出相对位置的字符,或者设置。这里实验的时候出现了问题,主要是对setrange的操作不熟悉,大家看看下面操作就明白了setrange是对相应位置进行等数量替换的,5的位置就是@那里,QQ.com是6个字符去替换mysina.com10个字符时,只能是代替前6个了。
  1. redis 127.0.0.1:6379[1]> set test3 chen@gmail.com  
  2. OK  
  3. redis 127.0.0.1:6379[1]> get test3  
  4. "chen@gmail.com"  
  5. redis 127.0.0.1:6379[1]> setrange test3 5 mysina.com  
  6. (integer) 15  
  7. redis 127.0.0.1:6379[1]> get test3  
  8. "chen@mysina.com"  
  9. redis 127.0.0.1:6379[1]> setrange test3 5 QQ.com  
  10. (integer) 15  
  11. redis 127.0.0.1:6379[1]> get test3  
  12. "chen@QQ.com.com"  
incr/decr/incrby/decrby就是自加自减的意思后面的incrby/decrby加入了步长,还有就是如果没有key值的话,它也可以操作:
  1. redis 127.0.0.1:6379> set age 20  
  2. OK  
  3. redis 127.0.0.1:6379> incr age  
  4. (integer) 21  
  5. redis 127.0.0.1:6379> get age  
  6. "21"  
  7. redis 127.0.0.1:6379> incrby age 5  
  8. (integer) 26  
  9. redis 127.0.0.1:6379> incrby ss 3  
  10. (integer) 3  
  11. redis 127.0.0.1:6379> incr tt 2  
  12. (error) ERR wrong number of arguments for 'incr' command  
  13. redis 127.0.0.1:6379> get tt  
  14. (nil)  
mget/mset就是批量的插入取出。

hash表的基本操作与string一样,hget/hset/hsetnx,happend,hstrlen,hgetrange/hsetrange,hincr/hdecr/hincrby/hdecrby,hmget/hmset,就是在前面加了个H而已。它特别适合存储对象数据。基本的操作跟上面是一样的,这里的key作为hash的名字来用了,在操作时需要给出你要插入取出的hash域:

  1. redis 127.0.0.1:6379[1]> hset myhash ID 001  
  2. (integer) 1  
  3. redis 127.0.0.1:6379[1]> hset myhash name chen  
  4. (integer) 1  
  5. redis 127.0.0.1:6379[1]> hset myhash address ncut  
  6. (integer) 1  
  7. redis 127.0.0.1:6379[1]> hset myhash telephone 12332123  
  8. (integer) 1  
  9. redis 127.0.0.1:6379[1]> hget myhash id  
  10. (nil)  
  11. redis 127.0.0.1:6379[1]> hget myhash ID  
  12. "001"  
  13. redis 127.0.0.1:6379[1]> hget myhash name  
  14. "chen"  
  15. redis 127.0.0.1:6379[1]> hget myhash0000 name  
  16. (nil)  
其他的操作跟上面一样雷同即可:
  1. redis 127.0.0.1:6379[1]> hkeys myhash  
  2. 1) "ID"  
  3. 2) "name"  
  4. 3) "address"  
  5. 4) "telephone"  
  6. redis 127.0.0.1:6379[1]> hvals myhash  
  7. 1) "001"  
  8. 2) "chen"  
  9. 3) "ncut"  
  10. 4) "12332123"  
  11. redis 127.0.0.1:6379[1]> hgetall myhash  
  12. 1) "ID"  
  13. 2) "001"  
  14. 3) "name"  
  15. 4) "chen"  
  16. 5) "address"  
  17. 6) "ncut"  
  18. 7) "telephone"  
  19. 8) "12332123"  
  • 1
  • 2
  • 下一页

相关内容