redis的基本命令
- select 1:选择数据库1。(redis一共有16个数据库,默认16个,可以自己去redis的配置文件中改)
- keys *:查看所有的key。
- set age 1:设置key为age,value为1。
- get age:获取key为age的value。
- exists age:判断key为age的数据是否存在(返回1为存在,0为不存在)。
- move age 1:从数据库1中移除key为age的数据。
- expire age 10:设置key为age的数据10秒后过期。
- ttl age:查看key为age的数据还剩多久过期。
- type age:查看key为age的数据所存储的数据类型。
- flushdb:清除当前数据库的所有数据。
- flushall:清楚所有数据库的数据。
- config get requirepass:获取数据库密码。
- config set requirepass “123456”:设置数据库密码。
- auth 123456:密码验证,用于在设置了数据库密码后进行验证。
五大数据类型
String类型
- set name tom:设置key为name,value为tom。
- get name:获取key为name的value。
- append name “,hello”:在key为name的value后追加一段字符串。最后结果为:tom,hello
- strlen name:获取key为name的value的字符串长度。
- exists name:判断key为name的数据是否存在(返回1为存在,0为不存在)。
- getrange name 0 3:截取字符串,从下标0到3,结果为"tom,"。
- getrange name 0 -1:获取全部的字符串。
- set age 0。
- incr age:自增+1。
- decr age:自增-1。
- incrby age 10:设置步长为10,age增加10。
- decrby age 10,设置步长为10,age减去10。
- set mytext abcdefg。
- setrange mytext 1 a:字符串替换,1代表下标为1,zz代表需要替换的字符串。结果为:azzdefg。
- setex text1 30 “hello,world”:设置key为text1,value为hello,world,过期时间为30秒。
- setnx text2 “hello,world”:如果key为text2不存在才能设置成功,成功返回1,失败返回0。
- mset k1 v1 k2 v2 k3 v3:一次存储多个数据。
- mget k1 k2 k3:一次获取多个数据。
- msetnx k1 v1 k4 v4:一次存储多个数据,如果key存在则设置失败。这里k1是存在的,返回0,表示设置失败。虽然k4不存在,但是连同k4也设置失败了,这里体现了其原子性。
- getset text3 redis:先获取再设置。因为text3事先没有,获取到的是空值。然后设置了text3的value为redis。
List类型
- lpush list one:往key为list的列表头部插入value为one的数据。
- rpush list two:往key为list的列表尾部插入value为two的数据。
- exists list:判断list是否存在。
- lrange list 0 -1:查询key为list的列表中所有的数据。
- lrange list 0 1:获取下标从0开始到1的值。
- lindex list 0:通过下标获取值。
- llen list:获取list的长度。
- lpop list:移除表头的第一条数据(从最左边,即第一条数据)。
- rpop list:移除表尾的第一条数据(从最右边,即最后一条数据)。
- lpush list one。
- lpush list two。
- lpush list three。
- lrem list 1 one:移除key为list的列表中值为one的一个元素,因为列表中的值是可以重复,所以这种移除方法是可以指定个数的。
- lpush list one。
- lpush list two。
- lpush list three。
- ltrim list 1 2:通过下标对列表的截取,最后就只剩two和three了。one就被截断了。
- lpush list one。
- lpush list two。
- lpush list three。
- lpush list2 four。
- rpoplpush list list2:这是一个组合命令,将list中的最后一个元素移除并添加到list2中,最后list2中会有three和four两个元素,而list还剩one和two。(如果list2不存在,则会创建这个列表并将three放进去)。
- lpush list one。
- lpush list two。
- lpush list three。
- lset list 0 zero:将key为list的列表中下标为0的元素的值设置为zero。(如果list不存在或者超过下标,都会报错)。
- linsert list before “zero” “hello”:在值为zero的元素的前面插入一条值为hello的数据(有before当然就有after了)。
redis里的列表其实就是一个链表,在头尾插入或改动值效率最高,中间插入效率较低。
Set类型
和Java里的set类似,set里的值是不能重复的,本质就是一个无序不重复集合。
- sadd myset “hello”:添加一个元素。
- smembers myset:查看myset中的所有值。
- sismember myset hello:判断hello是否存在于myset中。(1表示存在,0表示不存在)。
- scard myset:获取myset中的元素个数。
- srem myset hello:移除myset中值为hello的元素。
- sadd myset “hello”。
- sadd myset “world”。
- srandmember msyet:随机获取myset中的一个元素。
- srandmember msyet 2:随机获取myset中的两个元素。
- spop myset:随机移除myset中的一个元素。
- sadd myset “hello”。
- sadd myset “world”。
- sadd myset2 “hello1”。
- sadd myset2 “world1”。
- smove myset myset2 “hello”:将myset中的hello移动到myset2中。
- sadd myset a。
- sadd myset b。
- sadd myset2 b。
- sadd myset2 c。
- sdiff myset myset2:查看myset和myset2相比不同的元素,结果为a(因为是拿myset和myset2比,以myset为主,所以结果不是a和c)。
- sinter myset myset2:查看myset和myset2中相同的元素,结果为b。
- sunion myset myset2:查看myset和myset2合在一起的所有元素,结果为a,b,c。(这里不会算重复的元素)。
Hash类型
hash类型其实就可以看作Java中的Map类型,具体点大概就是key,<key,value>,map里的存的值是map类型
- hset myhash key1 value1:设置key为myhash的value为key为key1,value为value1的hash类型的数据
- hget myhash key1:获取key为myhash中key为key1的值,啥也别说了,这就是套娃。
- hmset myhash key2 value2 key3 value3:同时写多个值。
- hmget myhash key2 key3:同时获取多个值。
- hgetall myhash:获取myhash中所有的值。
- hlen myhash:获取myhash中存储的数据数量。
- hexists myhash key1:判断hash类型中指定的值是否存在。(1表示存在,0表示不存在)。
- hkeys myhash:获取hash中所有的key。
- hvals myhash:获取hash中所有的value。
- hsetnx myhash key1 value3:如果存在则设置。
- hdel myhash key1:删除数据。
- hset myhash key1 5。
- hincreby myhash key1 1:设置步长为1(可以设置负数,表示减),key1的值增加1。和String类型中的方法类似,同样incr方法也是一样的。
Zset类型
有序集合,其实就是在set的基础上增加了一个序号,用于分组和排序。
- zadd myset 1 one:新增一条数据,1表示序号,one是value。
- zadd myset 2 two 3 three:添加多个值。
- zrange myset 0 -1:遍历。
- zrangebyscore myset -inf +inf:进行升序排序并获取值,最后两个表示最大值和最小值,-inf表示负无穷,+inf正无穷,如果有具体的值可以写具体的值。结果是:one two three。由小到大。
- zrangebyscore myset 0 4 withscores:进行排序获取值并带上他们的序号,结果是:one 1 two 2 three 3。由小到大。
- zrevrangebyscore myset -inf +inf:进行降序排列。
- zrem myset one:移除一个元素。
- zcard myset:获取集合的长度。
- zadd myset 1 one 2 two 3 three。
- zcount myset 1 3:获取指定区间的成员数量,结果:3,这里是包含了1和3的。