具体移步:http://www.redis.cn/commands.html
String(字符串)
string是redis最基本的类型, 一个key对应一个value
string类型是二进制安全的,意思是redis的string可以包含任何数据. 比如jpg图片或序列化的对象
string类型是redis最基本的类型,string类型的值最大能存储512MB
在redis中字符是基础,其它的数据结构,都是依赖字符的。所以我们字符是关键。
设置一个值 set 127.0.0.1:6379[1]> set key value [EX seconds] [PX milliseconds] [NX|XX] 127.0.0.1:6379[1]> set hello word OK
获得一个值 get 127.0.0.1:6379[1]> get key 127.0.0.1:6379[1]> get hello (nil) 127.0.0.1:6379[1]> get hello "word"
设置多个值 mset 127.0.0.1:6379[1]> mset xing yu name yafeng age 18 OK 127.0.0.1:6379[1]> get xing "yu" 127.0.0.1:6379[1]> get name "yafeng" 127.0.0.1:6379[1]> get age "18"
获取多个值 mget 127.0.0.1:6379[1]> mget xing name age 1) "yu" 2) "yafeng" 3) "18"
删除一个或多个值 del 127.0.0.1:6379[1]> del key [key ...] 127.0.0.1:6379[1]> del hello (integer) 1 127.0.0.1:6379[1]> get hello (nil)
删除会返回影响的行数, 但如果没有数据则为0 127.0.0.1:6379[1]> del xing (integer) 1 127.0.0.1:6379[1]> del xing (integer) 0
增加1 incr 增加指定值 incrby 127.0.0.1:6379[1]> set age 18 OK 127.0.0.1:6379[1]> get age "18" 127.0.0.1:6379[1]> INCR age (integer) 19 127.0.0.1:6379[1]> INCRBY age 10 (integer) 29
最大为2^64的有符号超过就报错
127.0.0.1:6379[1]> set age 9223372036854775807 OK 127.0.0.1:6379[1]> INCR age (error) ERR value is not an integer or out of range
减少1 decr 减少指定值 decrby
127.0.0.1:6379[1]> set age 10 OK 127.0.0.1:6379[1]> decr age (integer) 9 127.0.0.1:6379[1]> decrby age 10 (integer) -1
最小为2^64的有符号超过就报错
127.0.0.1:6379[1]> set age -9223372036854775808 OK 127.0.0.1:6379[1]> get age "-9223372036854775808" 127.0.0.1:6379[1]> DECR age (error) ERR increment or decrement would overflow
与memcache的区别
redis是一个非常棒的高速缓存工具。这个工具和memcache一样,非常的快。在网站的架构中,这二个工具的访问量可以达到同时上W的请求。所以这二个工具任意选择都行。
他们并不会成为工作的瓶颈。而最有可能出现瓶颈的是IO与网络。 所以这二个工具,一定要重点掌握。但是以今天的redis为主。 redis写速度与memcache是一样的。但是读速度,memcache比redis快很多。 redis是可以持久化的,memcache是不能持久化。 redis是有丰富的数据结构类型,memcache是key=>value redis是单核运行的,memcache是多核运行的 redis是value最大支持512M,memcache是1M memcache里面有最大值:2^64的无符号的 在memcache里面使用负数!不可以的。 redis里面有最大值:2^64的有符号的 在memcache里面直接顺时针方向回到了0,继续前行!! 在redis里面就报错了 在memcache中减到最小数的时候,一直可以减,但是都是0. 在redis中减少到最小数,继续减少,对不起,报错!! 说了这么多,并没有谁好谁坏的说法。工具都是根据项目来需求来定的。公司里面使用redis多,是因为redis的数据结构类型丰富,可以满足很多业务场景需求。因为满足业务场景需求而使用量大
Hash(哈希)
redis hash 是一个键值(key=>value)对集合
redis hash 是一个string类型的field 和value的映射表, hash特别适用于存储对象
设置一个hash值 hset 127.0.0.1:6379[1]> hset key field value key 是在redis里面不能重复的。 filed是在hash表里面不能重复的。 重复则直接覆盖 value是可以重复的。 127.0.0.1:6379[1]> hset yyf age 18 (integer) 1 127.0.0.1:6379[1]> hget yyf age "18" 127.0.0.1:6379[1]> hset yyf age 19 (integer) 0 127.0.0.1:6379[1]> hget yyf age "19"
获取一个hash值 hget
127.0.0.1:6379[1]> hget key field key 键 field 字段 127.0.0.1:6379[1]> hget yyf age "19"
设置多个hash值 hmset
127.0.0.1:6379[1]> hmset key field value [field value ...] key 键 是在redis里面不能重复的。 filed 字段 是在hash表里面不能重复的。 value 值 是可以重复的。 127.0.0.1:6379[1]> hmset me name yyf age 18 sex man OK
获取多个hash值 hmget 127.0.0.1:6379[1]>hmget key field [field ...] key 键 field 字段 127.0.0.1:6379[1]> hmget me name age sex 1) "yyf" 2) "18" 3) "man"
返回一个键所有的字段值 hkeys 127.0.0.1:6379[1]> hkeys key key 键 127.0.0.1:6379[1]> hkeys me 1) "name" 2) "age" 3) "sex"
返回一个键的长度 hlen 127.0.0.1:6379[1]> hlen key key 键 127.0.0.1:6379[1]> hlen me (integer) 3
删除一个或多个字段 hdel 127.0.0.1:6379[1]> hdel key field [field ...] key 键 field 字段 127.0.0.1:6379[1]> hdel me name age (integer) 2 127.0.0.1:6379[1]> hkeys me 1) "sex"
List(列表)
双向列表:二个口都可以进出
总结:吃多了,又拉又吐!
队列:一个口进,另一个口出:先进先出
总结:吃多了,拉出来
[堆]栈:一个口进出,先进后出
总结:吃多了,吐出来
从左边插入数据,到指定的队列里面。没有就创建这个。 lpush 127.0.0.1:6379[1]> lpush key value [value ...] key 键名 value 值(多个) 127.0.0.1:6379[1]> lpush list wang zhao qian shun li (integer) 5
查看数据 lrange 127.0.0.1:6379[1]> lrange key start stop key 键名 start 开始位置 从0开始 stop 结束位置 -1位末尾 127.0.0.1:6379[1]> lrange list 1 10 1) "shun" 2) "qian" 3) "zhao" 4) "wang" 127.0.0.1:6379[1]> lrange list 0 10 1) "li" 2) "shun" 3) "qian" 4) "zhao" 5) "wang" 127.0.0.1:6379[1]> lrange list 0 -1 1) "li" 2) "shun" 3) "qian" 4) "zhao" 5) "wang"
从左边弹出数据 并返回弹出的值 lpop 127.0.0.1:6379[1]> lpop key key 键名 127.0.0.1:6379[1]> lpop list "li" 127.0.0.1:6379[1]> lrange list 0 -1 1) "shun" 2) "qian" 3) "zhao" 4) "wang"
从右边弹入数据 rpush 127.0.0.1:6379[1]> rpush key value [value ...] key 键名 value 值(多个) 127.0.0.1:6379[1]> rpush list li (integer) 5 127.0.0.1:6379[1]> lrange list 0 -1 1) "shun" 2) "qian" 3) "zhao" 4) "wang" 5) "li"
从右边弹出数据 并返回弹出的值 rpop 127.0.0.1:6379[1]> rpop key key 键名 127.0.0.1:6379[1]> rpop list "li" 127.0.0.1:6379[1]> lrange list 0 -1 1) "shun" 2) "qian" 3) "zhao" 4) "wang"
查看长度 llen 127.0.0.1:6379[1]> llen key key 键名 127.0.0.1:6379[1]> llen list (integer) 4
通过对这个几个命令的组合,就可以实现双向列表,队列,堆栈!!
Set(集合)
添加集合, 不存在就添加 sadd 127.0.0.1:6379[1]> sadd key member [member ...] key 键名 member 成员 集合中的元素 127.0.0.1:6379[1]> sadd set yyf yyt yyh yyu (integer) 4
查看集合 显示时是无序的 smembers 127.0.0.1:6379[1]> smembers key key 键名 127.0.0.1:6379[1]> smembers set 1) "yyu" 2) "yyt" 3) "yyh" 4) "yyf"
随机弹出 spop 127.0.0.1:6379[1]> spop key [count] key 键名 count 弹出的数量 不写时默认一个 127.0.0.1:6379[1]> spop set "yyu" 127.0.0.1:6379[1]> spop set 2 1) "yyt" 2) "yyh"
查看长度 scard 127.0.0.1:6379[1]> scard key key 键名 127.0.0.1:6379[1]> scard set (integer) 5
交集 返回都有的成员 sinter 127.0.0.1:6379[1]> sinter key [key ...] key 键名(多个) 127.0.0.1:6379[1]> sadd set yyt yyf yyg yyj yyh (integer) 4 127.0.0.1:6379[1]> sadd set1 yyf yyt yyh (integer) 3 127.0.0.1:6379[1]> sinter set set1 1) "yyt" 2) "yyh" 3) "yyf"
差集 差集是不同的都显示。但是redis不是这样的,它的差集是以第一个集合为主。只显示第一个集合的差! sdiff 127.0.0.1:6379[1]> sdiff key [key ...] key 键名(多个) 127.0.0.1:6379[1]> sdiff set set1 1) "yyg" 2) "yyj"
并集 重复的只显示一次 sunion 127.0.0.1:6379[1]> sunion key [key ...] key 键名(多个) 127.0.0.1:6379[1]> sunion set set1 1) "yyj" 2) "yyh" 3) "yyf" 4) "yyt" 5) "yyg"
插入重复数据 127.0.0.1:6379[1]> scard set (integer) 5 127.0.0.1:6379[1]> sadd set yyf yyt (integer) 0 127.0.0.1:6379[1]> scard set (integer) 5
SortedSet(有序集合)
有序集合的排序是通过整型来进行排序的!!
添加有序结合 zadd 127.0.0.1:6379[1]> zadd key [NX|XX] [CH] [INCR] score member [score member ...] key 键名 zadd key 数字 字段 数字 字段 数字 字段............... 127.0.0.1:6379[1]> zadd set2 10 zhao 20 qian 30 shun 40 li (integer) 4
查看数据 zrange 127.0.0.1:6379[1]> zrange key start stop [WITHSCORES] key 键名 start 开始位置 从0开始 stop 结束位置 -1位末尾 WITHSOCRES 看见数字 可选参数 127.0.0.1:6379[1]> zrange set2 0 -1 1) "zhao" 2) "qian" 3) "shun" 4) "li" 127.0.0.1:6379[1]> zrange set2 0 -1 withscores 1) "zhao" 2) "10" 3) "qian" 4) "20" 5) "shun" 6) "30" 7) "li" 8) "40"
倒序排序 zrevrange 127.0.0.1:6379[1]> zrevrange key start stop [WITHSCORES] key 键名 start 开始位置 从0开始 stop 结束位置 -1位末尾 WITHSOCRES 看见数字 可选参数 127.0.0.1:6379[1]> zrevrange set2 0 -1 1) "li" 2) "shun" 3) "qian" 4) "zhao" 127.0.0.1:6379[1]> zrevrange set2 0 -1 withscores 1) "li" 2) "40" 3) "shun" 4) "30" 5) "qian" 6) "20" 7) "zhao" 8) "10"
查看长度 zcard 127.0.0.1:6379[1]> zcard key key 键名 127.0.0.1:6379[1]> zcard set2 (integer) 4
给整形价格指定值 zincrby 127.0.0.1:6379[1]> zincrby key increment member key 键名 increment 增加的值 member 成员 127.0.0.1:6379[1]> zincrby set2 20 li "60" 127.0.0.1:6379[1]> zrange set2 0 -1 withscores 1) "zhao" 2) "10" 3) "qian" 4) "20" 5) "shun" 6) "30" 7) "li" 8) "60"
key(键)
查看所有的key 127.0.0.1:6379[1]> keys * 1) "set2" 2) "myhash" 3) ":1:django.contrib.sessions.cachezxfhdfgas7wu2klnxvfh4zppsh57vbdi" 4) "me" 5) ":1:django.contrib.sessions.cacheh40nlu82gj2ku8lmqvwblh83hdcpwat6" 6) ":1:django.contrib.sessions.cacheay8tms36cfwdf8zjbiyx867gucg5d5ms" 7) "runoob" 8) "age" 9) "_kombu.binding.celery.pidbox" 10) "_kombu.binding.celeryev" 11) "hello" 12) ":1:django.contrib.sessions.cacheomyy1mz2i8e6pls9mdtvrqtdyrtd0ax2" 13) ":1:django.contrib.sessions.cacheefg80nny3l8kjavoyxdiiim5mjjq8bus" 14) "name" 15) "list" 16) "yyf" 17) "_kombu.binding.celery" 18) "set" 19) ":1:django.contrib.sessions.cacheugbzh4eer4cmbnx6qxlhzfmn8cohhnnj" 20) "set1"
查看s开头 127.0.0.1:6379[1]> keys s* 1) "set2" 2) "set" 3) "set1"
查看s结尾 127.0.0.1:6379[1]> keys *s 1) ":1:django.contrib.sessions.cacheay8tms36cfwdf8zjbiyx867gucg5d5ms" 2) ":1:django.contrib.sessions.cacheefg80nny3l8kjavoyxdiiim5mjjq8bus"
注:这个命令非常的常用,一定要记住。因为我们在测试数据的时候,经常有几百W的数据要测试。测试完了之后,这些数据都没有办法在使用了。必需删除掉之后,重新生成新数据。
所以我们测试的数据,和真实项目的数据。一定要有项目名开头作为key来进行区别。这个时候你的key就应该是bu:12345556
删除这些key的时候,就可以使用bu*,就可以获得到这些key.并进行删除。
原文:https://www.cnblogs.com/yuyafeng/p/10991746.html